Wie man einen View Helfer Verzeichnis (Zend Framework) hinzufügen
-
22-09-2019 - |
Frage
Ich beginne mit ZF (1.9.7), und ich möchte View Helfer aus einer Bibliothek zwischen allen meinen Projekten geteilt verwenden. Aber ich kann nicht finden, wie es Verzeichnis des Helfer Pfad hinzuzufügen. Meine Terrarianer arbeitet Bußgelder, wenn ich sie Helfer in der Anwendung den Weg stellen.
Hier ist der Fehler, wo ich den Weg zu ZF Helfern finden, und mit dem Weg zu den Anwendungen diejenigen.
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)
Mit freundlichen Grüßen
Cédric
Lösung
Es kann sehr leicht für die Ansicht mit der eingebauten in Zend_Application Ressource durchgeführt werden. Wenn Sie ini configs verwenden, fügen Sie eine Zeile wie folgt aus:
resources.view.helperPath.My_View_Helper = "My/View/Helper"
Das Ende des Schlüssels ist der Klassenname Präfix und der Wert der Pfad, in dem sie sich befinden.
Andere Tipps
Helper Pfade hinzugefügt werden durch Zend_View_Abstract :: addHelperPath () . Sie können diese Methode aufrufen, direkt auf einer vorhandenen View-Instanz.
Helper Pfade können auch auf verschiedene Weise während Bootstrap konfiguriert werden. Schauen Sie sich die ZF Handbuch Kapitel Zend_Application
zu sehen, wie Bootstrap-Klassen und Ressourcen nutzen:
- 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
Es gibt ein Problem bei der Verwendung von
resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers"
kann ich keine View Helfer im Layout zugreifen, auch lokale Helfer im Modul. (Plugin nach Namen ‚LoggedInAs‘ wurde nicht in der Registrierung nicht gefunden), aber immer noch Arbeit in Ansichten Vorlagendateien.
Ich habe diesen Code "echo Zend_Debug :: dump ($ this)" am Ende der Layout-Datei und es ist ein Teil der Ausgabe.
["_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/"
}
}
Wenn aber diesen Code in der Bootstrap-Datei gibt es kein Problem.
//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');
war die Ausgabe wie folgt:
["_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: View Helfers in Zend Framework für einen Check out mit rob Allens Loggedinas view Helfer mehr nehmen zu diesem Thema ausführlich beschrieben.
Sie können nicht nur Sie, wie David Caunt angegeben, aber Sie können es auch tun, wie diese in der Bootstrap. Hinweis gibt es immer mehr als einen Weg, um etwas in Zend Framework zu tun
Schauen Sie sich http://devzone.zend.com/article/3412
Wenn Sie den Zugriff auf das Ansichtsobjekt haben, gehen Sie wie folgt vor.
<?php
$view->addHelperPath('My/View/Helper/', 'My_View_Helper');
?>
Sie müssen möglicherweise das an, wenn Sie in einer Front Controller Plugin
erhaltenÜberprüfen Sie auch diese wirklich große Menge von Stellen ausgehend hier:
Ich habe für die Registrierung der zend View Helfer aus einem gemeinsamen Verzeichnis kurze, einfache Anleitung geschrieben, die in der gesamten Anwendung zugegriffen werden können. Bitte überprüfen.
http://www.mixedwaves.com/2010/03/accessing-and-using-zend-view-helpers-from-a-common-directory/