Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-10-2008 18:40:16

Hubert
Nouveau membre
Date d'inscription: 30-10-2008
Messages: 3

Comment ajouter des modules dynamiquement?

Bon voila, je suis débutant (très) avec le ZF et le modèle MVC. J'utilisais auparavant la méthode 'classique' de développement en php, c'est a dire, un beau fouillis big_smile

Voici mon problème. Je suis présentement à porter mon site php vers le ZF. Le site étant un design standard a deux colonne j'ai donc créer un layout ZF pour affecter le contenu des deux colonnes principales au layout, pour le moment ça fonctionne bien.

Par contre, dans ma colonne de droite je veux ajouter différents "modules" dynamiquement dépendant de la page, par exemple: un module de connexion, un des dernier commentaires ajoutés. En php "classique' j'y arrivais en fesant simplement un include('/box_connexion.php'), maintenant avec zend je suis un peut perdu, dois-je créer un contrôleur, vue et modèle pour chaque petit "modules" de mon site et comment les  intégrer conditionnellement à la page en cours?

Merci !

Hors ligne

 

#2 31-10-2008 08:21:54

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Comment ajouter des modules dynamiquement?

Normalement, chaque "module" différents devraient être codé dans des contrôleurs différents. Car il est logique qu'un contrôleur gérant la connexion des utilisateurs ne devrait pas s'occuper de l'affichage du dernier commentaire ajouté.

Ensuite, pour les intégrer selon la page demandée, il te faudra mettre des conditions dans tes vues :

Code:

<?php if ( condition ) : ?>
   <!-- HTML -->
<?php endif; ?>

Afin de pouvoir "filtrer" le nom des pages au sein d'un de tes layouts, il te faudra assigner à ta vue le nom du contrôleur utilisé et cela depuis le contrôleur lui-même :

Code:

$this->view = $this->_request->getControllerName();

Cela te permettra de faire ceci dans ton layout :

Code:

<?php if ( $this->controller == 'mypage' ) : ?>
   <!-- conditional print -->
<?php endif; ?>

Dernière modification par acharrex (31-10-2008 08:27:25)

Hors ligne

 

#3 31-10-2008 15:58:36

Hubert
Nouveau membre
Date d'inscription: 30-10-2008
Messages: 3

Re: Comment ajouter des modules dynamiquement?

Merci pour ta réponse acharrex,

suivant ta démarche serait-t'il correcte d'utiliser:
action($action, $controller, $module = null, array $params = array());

dans les différentes conditions pour appeler le traitement de mes modules à même mes différentes vue de page?

Hors ligne

 

#4 31-10-2008 19:07:31

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Comment ajouter des modules dynamiquement?

Tu peux juste être plus clair, car je ne comprends pas ce que tu souhaites exactement ?

Hors ligne

 

#5 02-11-2008 01:36:53

Hubert
Nouveau membre
Date d'inscription: 30-10-2008
Messages: 3

Re: Comment ajouter des modules dynamiquement?

Suivant ton exemple, Dans mon layout j'utilise:

Code:

<?php
if ( $this->controller == 'mypage' ) :
   echo $this->action('test', 'modules');
endif; 
?>

Cela a pour effet de "m'inclure" mon module dans mon layout conditionellement à la page en cours, c'est exactement ce que je voulais faire et sa fonctionne plutôt bien.
Par contre, je me demande si c'est une bonne méthode pour procéder ?

Hors ligne

 

#6 03-11-2008 11:53:16

Roulio
Membre
Lieu: Alsace
Date d'inscription: 20-11-2007
Messages: 137
Site web

Re: Comment ajouter des modules dynamiquement?

je me pose également la même question. Faut il mettre des else-if dans le template ou est-ce que l'utilisation des segments et des actionstacks est la solution ?

Hors ligne

 

#7 03-11-2008 11:59:41

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Comment ajouter des modules dynamiquement?

Vous vous posez trop de question !
La solution est votre solution.
Tu peux utiliser un segment, actionstack ou aussi codé un View Helper..

Le Zend Framework est pensé pour être libre de faire comme on le souhaite.

Dernière modification par nORKy (03-11-2008 12:00:05)


----
Gruiiik !

Hors ligne

 

#8 06-11-2008 15:28:05

elkolonel
Administrateur
Lieu: Grasse
Date d'inscription: 18-12-2007
Messages: 299
Site web

Re: Comment ajouter des modules dynamiquement?

acharrex a écrit:

Normalement, chaque "module" différents devraient être codé dans des contrôleurs différents. Car il est logique qu'un contrôleur gérant la connexion des utilisateurs ne devrait pas s'occuper de l'affichage du dernier commentaire ajouté.

Ensuite, pour les intégrer selon la page demandée, il te faudra mettre des conditions dans tes vues :

Code:

<?php if ( condition ) : ?>
   <!-- HTML -->
<?php endif; ?>

Afin de pouvoir "filtrer" le nom des pages au sein d'un de tes layouts, il te faudra assigner à ta vue le nom du contrôleur utilisé et cela depuis le contrôleur lui-même :

Code:

$this->view = $this->_request->getControllerName();

Cela te permettra de faire ceci dans ton layout :

Code:

<?php if ( $this->controller == 'mypage' ) : ?>
   <!-- conditional print -->
<?php endif; ?>

Bonjour Acharrex,

Juste une petite remarque, ne serait ce pas :

Code:

$this->view->controller = $this->_request->getControllerName();

en lieu et place de :

Code:

$this->view = $this->_request->getControllerName();

A moins qu'il existe une subtilité de passage de variable à la vue que je ne connais pas ?

Cordialement,

Hors ligne

 

#9 07-11-2008 09:37:39

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Comment ajouter des modules dynamiquement?

elkolonel a écrit:

Juste une petite remarque, ne serait ce pas :

Code:

$this->view->controller = $this->_request->getControllerName();

en lieu et place de :

Code:

$this->view = $this->_request->getControllerName();

A moins qu'il existe une subtilité de passage de variable à la vue que je ne connais pas ?

Cordialement,

oui oui

Pour ma faire, j'ai un plugin qui initialise tout ca avant (parmis d'autres choses) sur dispatchLoopStartup

Code:

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->init();

    $view = $viewRenderer->view;
    $this->_view = $view;

    $view->module = $request->getModuleName();
    $view->controller = $request->getControllerName();
    $view->action = $request->getActionName();

----
Gruiiik !

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