Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Hello,
La stratégie classique de zf2 est la suivante quand il agit de définir le chemin du template d'une vue qui n'a pas été précisé (sois via la "template_map", sois via la $viewModel->setTemplate() depuis une action) :
nom-du-controller/nom-de-l-action.phtml.
Je ne vous apprend rien, mais j'aimerai changer sa pour un module.
Si c'est une vue du controller foo, je veut finalement qu'il aille dans bar/bu , ce pour toute les action.
Par exemple sa aurrai pu être via ce type de configuration :
view_manager=>[
'template_map'=>[
'mon-controller-foo/*=> 'bar/bu/'
]
]
Ma finalité est, entre autre, de faire partager les même vue a deux contrôler différent ^^.
EDIT:
oups, c'est nom-module/nom-du-controller/nom-de-l-action.phtml., et non "nom-du-controller/nom-de-l-action.phtml.". mais vous avez compris le principe !
"
Dernière modification par Splyf (17-03-2016 11:19:08)
Hors ligne
Salut,
J'ai eu les mêmes problème et j'ai pu bien bosser la couche vue de zf2. J'ia plusieurs interrogation quant à ce que tu demandes.
Si deux de tes contrôleur utilise les mêmes vues ne peux tu pas utiliser le plugin de controlleur forward ? En gros si tu as deux vue a charger dans deux contrôleurs c'est qu'au final le contrôleur responsable de cette vue est appelée par ton second contrôleur qui n'en as pas la responsabilité.
http://www.michaelgallego.fr/blog/2012/ … ar-widget/
Hors ligne
Hm, j'avais vue ce forward quelque part mais complètement oublié sont existence !
Sa pourrai marcher parfaitement !
Mais ce qui m’ennuie c'est que mes deux controller n'ont pas du tout les même processus pour déterminer les paramètre de la vue utiliser. (il ne font pas appel au même services).
Donc je doit recalculer et remplacer tout les paramètre de la vue récupérer après le forward, sa fait doublé le travail. Ou alors il faudrait que je rajoute d'autre paramètre d'action dans le 1er contrôler, mais sa signifie placé tout le code des deux controller en un seul, et donc j'ai plus la segmentation voulue au départ autant avoir 1 controller et reconfigurer les route ^^.
Ton lien propose aussi de passé par une vue.
Mais une aide de vue n'est pas fait a la base pour un travail de controller, il faut donc casi systématiquement injecter ce que possède nativement un controller (genre les service Request et RouteMatch).
J'ai presque envie de faire un plugin qui me génère le chemin de template en fonction de l'action et controller courant.
mais j'aimerai évité de repassé dans chaqu'une de mes action, autant réécrire manuelement les chemin a chaque foi.
Le truc parfait serrai que je me glisse juste après l'appel des action de mes deux controller et que je re définissent le chemin du viewModel à ce moment la.
Hors ligne
Hellow!
Pourquoi ne pas passer par un View Helper partial?
Un truc du type :
VueControler1/vue.phtml -> inclu partial('bar/bu/...');
VueControler2/other-vue.phtml -> inclu partial('bar/bu/...');
Hors ligne
Salut,
A oui tien.
Mais comment faire alors pour les paramètre de vue ?
function salateAction(){
return [
'carrotte'=>'rapé',
'pattate'=>''sauté'
];
}
salade.phtml
$this->partial('bar/bu' , [
'carotte'=>'$carrotte,
'patate'=>$patate
]);
Peut on récuperer les paramêtre d'une vue parente sans avoir a les injecter ? :s
(mais sinon, au moins pour ma culture G, pas moyen de se "glissé" juste après l'appel d'une action? ici pour modifié le template de la vue retourné).
Hors ligne
Pas moyen de se "glisser" à ma connaissance xD
Pour modifier les template tu a une fonction prévu pour ça, setTemplate je crois.
tu peu faire ça :
[lang=php] function salateAction(){ return [ 'params' => array( 'carrotte'=>'rapé', 'pattate'=>''sauté' ) ]; } salade.phtml $this->partial('bar/bu' , [ 'params'=>$params, ]);
Mais au premier coup d'oeil, je ne vois pas bien l’intérêt d'une vue commune qui n'attends pas les même paramètres.. =x
Peut être que cette vue commune tu peu la séparer en différents views helpers qui ne reprendront que les htmls communs.
Hors ligne
Bon le matin on a les idée plus clair.
J'ai relu tout bien le topic de Jgreco...merci a toi .
Le probleme que j'évoque n'est qu'un probleme de conseption, j'avais pas compris l'idée je pense. Je n'ai qu'a passé par un 3eme controller, qui aura pour bute de me fournir le model !
fooController
Public function saladeAction(){
return viewModel();
}
barContorller
Public function mangerAction(){
$saladeModel = $this->forward()->dispatch('fooController');
//traitement
saladeModel->setParameters([
//etc, etc...
])
return $saladeModel;
}
Magnifique !
Je vois même pas mal de perspective a ce système
EDIT : poster en même temps que flobrflo. Sisi il ont bien les même paramêtre, javais jsute pas pensé a passé par un tableau.
Mon probleme était surtout que je devais repassé a plusieurs endroit en cas de nouvelle variable.
Dernière modification par Splyf (18-03-2016 11:03:08)
Hors ligne
Pages: 1