IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Inclure un module dans un autre


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    CTO
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO

    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Par défaut Inclure un module dans un autre
    Bonjour, je cherche à inclure une page d'un module "help" dans une page d'un autre modul. Je suis parti pour faire du copier coller mais je me demandais si il existait un moyen de faire ça proprement avec une fonction qui va bien.
    Je suis très novice avec Symfony, je précise.

    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Par défaut
    En fait il faut que tu regardes du côté des component et partial.

    En gros tu factorises le contenu de ta page dans un moduleA :
    apps/frontend/modules/NOM_DU_MODULE/templates/_page.php

    si cette page n'a pas d'action delié tu peux alors faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php include_partial('NOM_DU_MODULE/page') ?>
    tu as même la possibilité de lui passer des variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php include_partial('NOM_DU_MODULE/page', array('var' => $var)) ?>
    Si jamais tu as une action lié alors cela devient un component et tu devras créer le fichier suivant :

    apps/frontend/modules/NOM_DU_MODULE/actions/components.class.php

    qui contiendra :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
     
    class NOM_DU_MODULEComponents extends sfComponents
    {
     
        public function executePage(sfWebRequest $request)
        {
           // tu mets ici le code de ton action
        }
     
    }
    et pour l'inclure tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php include_component('NOM_DU_MODULE', 'page') ?>
    Tu peux lui passer des variables de la même façon qu'un partial et les récupérer soit dans l'action de ton component soit dans ta vue.

  3. #3
    Membre averti
    Profil pro
    CTO
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO

    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Par défaut
    Citation Envoyé par Muspil Voir le message
    Si jamais tu as une action lié alors cela devient un component et tu devras créer le fichier suivant :

    apps/frontend/modules/NOM_DU_MODULE/actions/components.class.php

    qui contiendra :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
     
    class NOM_DU_MODULEComponents extends sfComponents
    {
     
        public function executePage(sfWebRequest $request)
        {
           // tu mets ici le code de ton action
        }
     
    }
    et pour l'inclure tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php include_component('NOM_DU_MODULE', 'page') ?>
    Tu peux lui passer des variables de la même façon qu'un partial et les récupérer soit dans l'action de ton component soit dans ta vue.
    Merci pour ta réponse.
    Dans ma fonction executePage, je peux appeler une fonction déjà écrite dans actions.class.php ? et à quel moment je précise le nom de la vue ?

  4. #4
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Bonjour,

    Moi j'ai fait ça dans mon projet actuel :

    1. J'ai créé un component "menu".
    2. J'ai crée d'autres components qui dépendent de la route que je précise dans l'URL.

    Exemple "menu_index", "menu_presentation", "menu_route"...

    Dans le code actions.class.php (executeIndex) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $this->route = sfContext::getInstance()->getRouting()->getCurrentRouteName();
    Dans le indexSuccess.php de mon module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Include_component('test', 'menu', array('sMenuComponent' => $route))
    Dans le template _menu.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    include_component('test', 'menu_'.$sMenuComponent)
    J'espère que cela pourra t'aider...

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2007, 19h09
  2. taglib: inclure un tag dans un autre tag
    Par guitouu dans le forum Struts 1
    Réponses: 3
    Dernier message: 23/10/2006, 13h43
  3. Inclure un site dans un autre
    Par LuckyDj dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 26/07/2006, 18h20
  4. [C#] Inclure une form dans une autre
    Par gilles641 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/04/2006, 15h45
  5. Inclure une page dans une autre page
    Par jo281 dans le forum ASP
    Réponses: 1
    Dernier message: 26/11/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo