Comment ajouter un répertoire d'aide de vue (cadre zend)
-
22-09-2019 - |
Question
Je commence par ZF (1.9.7), et je veux utiliser View Helpers à partir d'une bibliothèque partagée entre tous mes projets. Mais je ne peux pas trouver comment l'ajouter répertoire au chemin des aides. Mon Herpers fonctionne amendes quand je les ai mis dans le chemin d'aides de l'application.
Voici l'erreur, où je trouve le chemin d'aides ZF, et le chemin vers les applications.
object(ArrayObject)#71 (3) {
["exception"]=>
object(Zend_Loader_PluginLoader_Exception)#70 (6) {
["message:protected"]=>
string(151) "Plugin by name 'Voo' was not found in the registry; used paths:
Zend_View_Helper_: Zend/View/Helper/;C:/ZendStd/www/applis/VOO4_PROJECTX/views\helpers/"
["string:private"]=>
string(0) ""
["code:protected"]=>
int(0)
["file:protected"]=>
string(89) "C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Loader\PluginLoader.php"
["line:protected"]=>
int(401)
Cordialement
Cédric
La solution
Il peut être fait très facilement avec le construit en ressources Zend_Application pour la vue. Si vous utilisez configs ini, ajoutez une ligne comme ceci:
resources.view.helperPath.My_View_Helper = "My/View/Helper"
La fin de la clé est le préfixe du nom de classe, et la valeur du chemin où ils résident.
Autres conseils
chemins d'aide sont ajoutés par Zend_View_Abstract :: addHelperPath () . Vous pouvez appeler cette méthode directement sur une instance de vue existante.
chemins d'aide peuvent également être configurés de diverses manières au cours d'amorçage. Consultez le chapitre du manuel ZF sur Zend_Application
pour voir comment utiliser les classes Bootstrap et ressources:
- http://framework.zend.com/manual /1.12/en/zend.view.helpers.html
- http://framework.zend.com /manual/1.12/en/zend.application.quick-start.html
- http://framework.zend.com/manual /1.12/en/zend.application.examples.html
- http://framework.zend.com/manual/1.12/en/zend.application.available-resources.html#zend.application.available-resources.view
Il y a un problème lors de l'utilisation
resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers"
Je ne peux accéder à aucune aide de vue dans la mise en page même des aides locales dans le module. (Plugin par nom « LoggedInAs » n'a pas été trouvé dans le registre), mais travaille toujours dans les vues des fichiers de modèle.
Je mets ce code "echo Zend_Debug :: dump ($ this)" à la fin du fichier de mise en page et il y a une partie de la production.
["_prefixToPaths:protected"] => array(3) {
["Zend_View_Helper_"] => array(2) {
[0] => string(17) "Zend/View/Helper/"
[1] => string(16) "./views\helpers/"
}
["ZendX_JQuery_View_Helper_"] => array(1) {
[0] => string(25) "ZendX/JQuery/View/Helper/"
}
["Zend_View_Helper_Navigation_"] => array(1) {
[0] => string(28) "Zend/View/Helper/Navigation/"
}
}
mais lorsque vous utilisez ces codes dans le fichier de démarrage il n'y a pas de problème.
//Initialize and/or retrieve a ViewRenderer object on demand via the helper broker
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewRenderer->initView();
//add the global helper directory path
$viewRenderer->view->addHelperPath(APPLICATION_PATH.'/../library/App/views/helpers', 'App_View_Helper');
la sortie était comme ci-dessous:
["_prefixToPaths:protected"] => array(4) {
["Zend_View_Helper_"] => array(3) {
[0] => string(17) "Zend/View/Helper/"
[1] => string(16) "./views\helpers/"
[2] => string(86) "D:/zf/application/modules/default/views\helpers/"
}
["App_View_Helper_"] => array(1) {
[0] => string(85) "D:\zf\application/../library/App/views/helpers/"
}
["ZendX_JQuery_View_Helper_"] => array(1) {
[0] => string(25) "ZendX/JQuery/View/Helper/"
}
["Zend_View_Helper_Navigation_"] => array(1) {
[0] => string(28) "Zend/View/Helper/Navigation/"
}
}
EDIT: Consultez le aide de vue pour une plus détaillé prendre sur cette question à l'aide Loggedinas l'aide de vue rob allen.
Non seulement pouvez-vous faire comme spécifié par David Caunt, mais vous pouvez aussi le faire comme ceci dans votre bootstrap. Notez qu'il ya toujours plus d'une façon de faire quoi que ce soit dans le Zend Framework
Consultez http://devzone.zend.com/article/3412
Si vous avez accès à l'objet de la vue, procédez comme suit.
<?php
$view->addHelperPath('My/View/Helper/', 'My_View_Helper');
?>
vous devrez peut-être obtenir l'objet de vue si vous dans un plugin de contrôleur frontal
Consultez également cet ensemble de messages vraiment super à partir d'ici:
Je l'ai écrit à court tutoriel simple pour enregistrer les aides de vue zend à partir d'un répertoire commun, accessible dans toute l'application. S'il vous plaît consulter.
http://www.mixedwaves.com/2010/03/accessing-and-using-zend-view-helpers-from-a-common-directory/