如何添加视图帮助器目录(zend框架)
-
22-09-2019 - |
题
我从 ZF (1.9.7) 开始,我想使用在我的所有项目之间共享的库中的视图助手。但我找不到如何将其目录添加到助手路径中。当我将它们放在应用程序的助手路径中时,我的 Herpers 工作得很好。
这是错误,我在其中找到 ZF 助手的路径以及应用程序的路径。
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)
此致
塞德里克
解决方案
它可以很容易地与内置Zend_Application资源的视图进行。如果您使用INI CONFIGS,加上这样一行:
resources.view.helperPath.My_View_Helper = "My/View/Helper"
的键的端部是类名的前缀,并且该值在那里它们所在的路径。
其他提示
辅助路径通过添加 Zend_View_Abstract::addHelperPath(). 。您可以直接在现有 View 实例上调用此方法。
还可以在引导期间以各种方式配置辅助路径。查看 ZF 手册中的章节 Zend_Application
查看如何使用 Bootstrap 类和资源:
- 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
有使用时是一个问题
resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers"
我可以在布局模块中访问没有视图助手甚至本地助手。 (插件的名字“LoggedInAs”没有在注册表中找到),但在视图中的模板文件仍在工作。
我把这个代码“回波Zend_Debug ::转储($这一点)”在布局文件的末尾和有输出的一部分。
["_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/"
}
}
但在自举文件中使用这些代码时是没有问题的。
//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');
的输出是象下面这样:
["_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/"
}
}
编辑:查核视图助手在用于Zend框架更详细的使用抢阿伦的Loggedinas视图助手这个问题服食。
您不仅可以做由大卫Caunt指定的,但你也可以像这样做在你的引导。注总有Zend框架做任何事情的方法不止一种
查核 http://devzone.zend.com/article/3412
如果可以访问该视图对象,执行以下操作。
<?php
$view->addHelperPath('My/View/Helper/', 'My_View_Helper');
?>
则可能需要,如果你获得视图对象在一个前端控制器插件
另外看看这个真正伟大的一套岗位从这里开始:
我已经写短简明教程用于从一个公共目录,其可以在整个应用程序访问注册Zend视图助手。请看看。
http://www.mixedwaves.com/2010/03/accessing-and-using-zend-view-helpers-from-a-common-directory/