Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-05-2010 13:48:34

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

[Zend 1.10]: Rendre plusieurs vue dans une autre vue

Bonjour,
Je me sens ridicule à poser cette question mais je n'ai pas trouvé d'exemple concret.
Je cherche à générer une page en plusieurs blocs.
Chaque action de mon controlleur est censé construire son bloc et le rendre dans son propre segment de réponse.
Il s'agit d'afficher la fiche d'un candidat (controlleur fiche, module candidat).
Voici le controlleur:

Code:

class Candidat_FicheController extends Zend_Controller_Action
{
  public function indexAction()   
  {
    $this->_helper->actionStack('actions', 'fiche', 'candidat');
    $this->_helper->actionStack('presentation', 'fiche', 'candidat');
    
    //$this->render('index');
    //$this->render('actions','action_container');
  }
  public function actionsAction()   
  {
    $this->_helper->viewRenderer->setResponseSegment('actions_container');
    //$this->getResponse()->insert('action_container', $this->view->render('actions.phtml'));
    //$this->render('actions','action_container');
  }
  public function presentationAction()   
  {
     $this->_helper->viewRenderer->setResponseSegment('presentation_container');
  }
}    
?>

Et voici ma vue index.phtml:

Code:

<?php echo $this->layout()->action_container; ?>
<?php echo $this->layout()->presentation_container; ?>

Les 2 vues actions.phtml et presentations.phtml contiennent pour le moment "titi" et "toto".

Or lorsque j'apelle /candidat/fiche/index, rien ne s'affiche.
Je ne comprends pas comment faire j'ai l'impression que l'on ne peut agir que sur les segments du layout et qu'on ne peut pas gérer de segments dans la vue .
Est ce que je me trompe? Avez vous une solution à ce problème qui me semble tout de même assez classique ?

David

Hors ligne

 

#2 02-05-2010 15:14:04

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Zend 1.10]: Rendre plusieurs vue dans une autre vue

regarde l'aide de vue $this->action()

Hors ligne

 

#3 02-05-2010 16:09:20

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend 1.10]: Rendre plusieurs vue dans une autre vue

J'ai fait le choix personnel de refuser d'utiliser ces Action Views Helpers car dans ce cas c'est la vue qui fait appel au controller (MVC Pull) et non l'inverse.
Y'a pas un moyen en PUSH ?

David

Dernière modification par booradley (02-05-2010 16:11:21)

Hors ligne

 

#4 03-05-2010 10:49:19

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend 1.10]: Rendre plusieurs vue dans une autre vue

En utilisant les actionStack , viewRenderer et les segments de réponse, y'a pas moyens de rendre un segment dans une vue et non un layout ?

Hors ligne

 

#5 03-05-2010 17:21:34

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend 1.10]: Rendre plusieurs vue dans une autre vue

Il semble que ce ne soit pas la solution la plus évidente donc je vais utiliser les action view helpers ce qui me permettra de d'avoir une plus grande indépendance entre les controlleurs.
.

Hors ligne

 

#6 03-05-2010 23:34:48

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Zend 1.10]: Rendre plusieurs vue dans une autre vue

les vues sont appelées dans les actions, ici tu indique à ta vue qu'il faut afficher le rendue d'une autre action. Côté MVC c'est vrai que c'est pas joli mais côté choix de l'endroit où appeler ton autre action, il y a pas mieux.

Hors ligne

 

#7 04-05-2010 10:13:56

booradley
Membre
Date d'inscription: 10-01-2009
Messages: 163

Re: [Zend 1.10]: Rendre plusieurs vue dans une autre vue

Ouais ca me plait pas énormément mais bon ca a le mérite d'encourager le découplage à fond.
De plus ca reste parfaitement MVC puisque c'est la vue qui dialogue avec différents controlleur.
Par exemple voici ce que devient l'action de ma page d'accueil:

Code:

class IndexController extends Zend_Controller_Action   
{   
    public function indexAction()
    {    
    // Que dalle!
    }   
}

Et la vue associée:

Code:

<?php $this->action('index', 'home-selection', 'candidat'); ?>
<?php $this->action('formulaire', 'inscription', 'membre'); ?>
<?php $this->action('index', 'annonces-du-jour', 'candidat'); ?>
<?php $this->action('index', 'derniers-temoignages', 'temoignage'); ?>

Ca multiplie de nombre de controlleurs/vues mais ca réduit chaque action à un traitement minimum.
Et les controlleurs/actions appelés via l'url ont tendance a devenir de simples containers vides.

Je pensais gérer ce découplage via le controlleur principal via des actionStack mais comme je n'arrive pas le faire, je pense que je vais garder cette solution d'action view helpers qui permet un tres bon découplage.
Je constate actuellement un ralentissement de l'application mais je suis pas encore certain que cela vienne de ca.

Dernière modification par booradley (04-05-2010 10:19:36)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages