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

MVC PHP Discussion :

Gestion des layouts depuis le controller


Sujet :

MVC PHP

  1. #1
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut Gestion des layouts depuis le controller
    Bonjour,

    J'ai lu les tutoriaux sur les layouts sur developpez.com et sur vos forums (+les docs zend) et je dois avouer que je n'arrive pas à faire ce que je souhaite.

    En effet actuellement dans mon layout je fais ceci pour afficher des blocs via les controllers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo $this->action('index', 'news');
    ?>
    Mais je trouve cette technique pas très propre surtout si je ne souhaite pas afficher les news sur telle ou telle page...

    Je souhaite intégrer la vue de mon controller news par exemple comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->layout()->news; ?>
    Je créer une variable news dans mon layout et c'est dans le controller que j'intègrerais la vue comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $layout->layout()->news = $news;
    Mais ceci ne fonctionne pas.

    J'ai bien essayé ceci dans mon controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->setRender('toto', 'adroite', true);
    $frontController = Zend_Controller_Front::getInstance();
    Mais je n'arrive pas à afficher la vue de mes news et si j'y arrive la vue s'inclue bien mais ne charge plus le content...

    Si vous savez comment faire je suis preneur

    Bonne journée à vous

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600

  3. #3
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Oui se serait pour faire des segments dans mon layout. Je souhaite simplement insérer la vue du controller News dans mon layout mais depuis le controller.

    J'ai donc bien lu la doc de zend sur les partial mais pourrais-tu me faire un petit exemple avec une vue et un controller stp que je voie ce que sa donne en réel car dans la doc c'est pas super explicite je trouve.

    C'est comme ceci je suppose :

    NewsController.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    class NewsController extends Zend_Controller_Action
    {
    public function indexAction()
    {
      //Mon action ou j'insere un mini texte dans ma vue des news
    $this->view->news = "UNE NEWS !"
      //Je veux que mon controller ajoute dans une variable de vue pour le layout le script de vue des news
    $this->layout()->mesNews = $this->render();
    Cette ligne doit être fausse c'est juste pour illustrer ce que je veux faire
    }
    }
    ?>
    news/index.phtml (script de vue de la box de news)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo "<h1>".$this->news."</h1>";
    ?>
    Et dans mon layout je souhaite simplement récupérer la variable globale du layout que j'ai créer "mesNews"
    layout.phtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    //Je récupère ma variable mesNews qui peut bien sûr être vide des fois
    echo $this->mesNews;
    ?>
    Mais dans mon raisonnement ce que je trouve bizarre c'est comment peut être appelé mon controller News depuis le layout vu que je lui fournis qu'une variable globale. Donc a mon avis c'est pas possible ce que j'ai écris.

    Je voudrais avoir votre ressenti sur ceci.
    Bonne journée

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Attend que je comprenne.

    Tu as un layout.phtml, qui reprend l'ensemble de ta charte graphique, ensuite tu crées une action dans un controller, et tu veux que cette action apparaisse dans ton layout?

  5. #5
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    J'ai trouvé une solution mais c'est pas terrible j'abandonne l'idée. Je passe par un :

    echo $this->action('displayhello', 'menu', 'default');

    C'est le mieux pour moi.

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Salut je prends la discussion en cours donc je vais vous prier de bien vouloir m'aider. alors j'ai un layout.phtml dans lequel j'affiche facilement via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="main">
    			<?php echo $this->layout()->content;?>&nbsp;
    		</div>
    ainsi, j'ai un controller "MainController" qui récupère une variable $page et là j'indique quelle page afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class MainController extends Zend_Controller_Action
    {
     
        public function init()
        {
            /* Initialize action controller here */
        }
     
        public function indexAction()
        {
            // action body
            $page = $this->_getParam('page');
            if($page=='vendeur'){
            $this->view->layout()->main=$this->view->action('index','vendeur');
            }
        if($page=='acheteur'){
            $this->view->layout()->main=$this->view->action('index','acheteur');
            }
    //suite du code...
    Mon problème est alors le suivant: une fois dans mon contrôleur 'vendeur' (qui s'affiche bien jusque là) j'ai une action 'saisir' qui doit me rendre un formulaire html se trouvant dans sa vue associée 'saisir.phtml'. donc dans le contrôleur 'vendeur' précisément l'action 'index' j'ai une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_forward('saisir');
    qui oriente vers l'action que je veux effectuer et afficher dans mon layout. La difficulté vient alors du fait que la vue 'saisir.phtml' s'affiche mais hors de mon layout. comment régler ce problème?
    j'ai pensé à envoyé au contrôleur 'MainController' la variable '$page' avec la valeur 'saisir' et appliquer la même logique que pour 'vendeur' et 'acheteur' ci-dessus mais alors comment ça se fait? comment envoyer une variable depuis un contrôleur à un autre contrôleur? est-ce que ma méthode vous semble réalisable? des propositions? je bloque sur mon projet de stage depuis quelques jours et je flippe grave... Merci à tous...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Pourquoi tu passes par mainController, je ne vois pas trop l'intérêt et de plus passer par une action index qui redirige vers action saisir.

    puisque $page correspond à tes controller au vue de tes exemples.
    $page = $this->_getParam('page');

    Si ton URL est http://www.monsite/vendeur/saisir
    le router ZF va te diriger sur le controller vendeur et action saisir.

    Peux tu nous éclairer sur ton organisation sans parler de code, merci.

  8. #8
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci pour la réponse freeseb74. En fait c'est parce que mon affichage se gère depuis main que j'ai tenté de passer encore par lui. d'autre part justement j'arrive pas à envoyer (non je ne sais pas comment ça se fait) la variable $page d'un controlleur à un autre donc de vendeur à 'main'; enfin justement le routage se fait puisque j'ai ma vue mais saisir.phtml mais seulement pas dans le layout... voilà. Ai-je été un peu plus clair?

Discussions similaires

  1. [Joomla!] Gestion des menus depuis le site lui-même
    Par roots_man dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 22/12/2008, 17h14
  2. Gestion des évenements depuis un fichier JS
    Par CodeMikiman dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 18/06/2008, 12h06
  3. gestion des sessions avec le controller struts
    Par don'de dans le forum Struts 1
    Réponses: 4
    Dernier message: 18/12/2006, 19h21
  4. [C#] Gestion des Events d'un control Composite
    Par lord_paco dans le forum ASP.NET
    Réponses: 3
    Dernier message: 07/10/2005, 10h10
  5. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 17h29

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