2010-10-08 22 views
5

J'ai une partie relativement compliquée de mon application, qui est un éditeur pour les listes de contrôle d'accès. J'ai besoin de le réutiliser dans quelques endroits, et je voudrais qu'il soit chargable tout ajax-y et tel.Où dois-je mettre les scripts de vue nécessaires aux aides à la vue (en utilisant Zend_View et la disposition de répertoire par défaut)?

Parce que j'ai besoin de l'utiliser souvent, je voudrais en faire un Zend_View_Helper. C'est simple - il suffit de mettre $view->setHelperPath(APPLICATION_PATH . '/views/helpers', 'Cas_View_Helper'); dans le bootstrap pour la vue, et tout semble être réglé en ce qui concerne le chargement de l'assistant de vue. Cependant, l'assistant devrait vraiment être sorti en utilisant un script de vue. Y a-t-il un endroit standard où je devrais mettre cela?

Répondre

8

Généralement, lorsqu'un assistant a besoin d'un script de vue, ce script est placé dans un partiel. L'emplacement de cette partie peut varier en fonction de la structure de votre répertoire, mais la norme est:

application[/modules/name]/views/scripts/partials/ 

Vous pouvez écrire une aide avec quelque chose comme ceci:

class Cas_View_Helper_Foo extends Zend_View_Helper_Abstract 
{ 
    protected $partial = 'partials/foo.phtml'; 
    protected $view = null; 

    // Render the partial here 
    public function foo($params) 
    { 
     $this->view->partial($this->partial, $params); 
    } 

    // Specifying this method Zend_View will inject the view here 
    public function setView(Zend_View_Interface $view) 
    { 
     $this->view = $view; 
    } 

} 
+0

+1 pour la seule réponse qui est jusqu'ici donné un chemin. –

0

Dans le dossier d'affichage, vous créez un assistant de dossier. Ici vous mettez les aides de vue.

+0

Oui, j'ai fait ça. Mais l'assistant a besoin d'un script de vue lui-même –

1

Il n'y a pas une norme, recommandation ou quelque chose dans la pierre sur la façon de le faire. ZF étant aussi flexible qu'il l'est, vous laisse vraiment le choix de ce qui convient le mieux à votre application. Je vais utiliser cette réponse pour une comparaison des solutions actuelles.

Keyne réponse est la solution que je pense que la plupart des gens finissent par venir. Personnellement, j'ai mon propre tour: application[/modules/name]/views/scripts/helpers/{your helper}/blah.phtml Qui vous permet de ne pas avoir de noms partiels en conflit, et être en mesure de naviguer facilement vers votre fichier d'aide de vue.

Bien que cela aspire encore les balles pour la modularité, les aides de vue doivent être installées dans au moins deux endroits. Alternativement une autre solution qui est très populaire est de faire:

application[/modules/name]/views/helpers/{your helper}.php 
application[/modules/name]/views/helpers/{your helper}/{view scripts}.phtml 

Qui fournit un peu mieux la modularité pour vos aides de vue.