【问题标题】:Zend_View and addHelperPathZend_View 和 addHelperPath
【发布时间】:2011-01-31 15:46:27
【问题描述】:

我在使用空 Zend_View 和 addHelperPath 时遇到问题。 有人知道两者的区别在哪里

$view = Zend_Layout::getMvcInstance()->getView();
$view->addHelperPath(
    APPLICATION_PATH . '/views/helpers/layouts', 
   'FOO_View_Helper'
);

$view = new Zend_View;
$view->addHelperPath(
    APPLICATION_PATH . '/views/helpers/layouts', 
    'FOO_View_Helper'
);
Zend_Layout::getMvcInstance()->setView($view);
$helper = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$helper->setView($view);

对于第一个示例,我的视图助手已加载。例子二说

Plugin by name 'PriceOutput' was not found in the registry; used paths:
    Zend_View_Helper_: Zend/View/Helper/;./views\helpers/

我添加了一个

echo "<xmp>", var_dump($registry), "</xmp>";

PluginLoader::load($name, $throwExceptions = true)

和 helperPaths 都在同一个地方。但是对于第二个例子,ZF 似乎只搜索Zend_View_Helper 而不是FOO_View_Helper

有什么想法吗?

就像我说的,第一个例子看了一下 FOO_View_Helper,第二个不是: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'FooBar' was not found in the registry; used paths: FOO_View_Helper_: C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/basket/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/globallayer/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/globallayer/help/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/globallayer/styleinfolayer/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/layout/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/nys/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/overview/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/search/;C:\Programme\Zend\Apache2\htdocs\trunk_webshop\application/views/helpers/singleproductview/;C:\Programme\Zend in C:\Programme\Zend\Apache2\htdocs\trunk_core_webshop\library\Zend\Loader\PluginLoader.php on line 414

($view->getHelperPaths() 应该更好:P)

【问题讨论】:

  • 尝试在你的视图脚本中调用一个不存在的助手,错误输出应该告诉你它试图访问哪些助手路径。

标签: php zend-framework helper


【解决方案1】:

有了这个

$view = Zend_Layout::getMvcInstance()->getView();
$view->addHelperPath(
    APPLICATION_PATH . '/views/helpers/layouts', 
   'FOO_View_Helper'
);

您正在获取现有视图并设置路径,这是正确的。

但是在第二个示例中,您将创建一个新视图,然后设置路径,从而替换由 Bootstrap 自动(且正确)加载的现有视图。这个新视图不知道您的引导程序,因此不知道您的自动加载器 - 因此出现错误。

【讨论】:

  • 任何想法,我要手动设置哪些配置? getView() 使用预配置的 View 实例检索 ViewRenderer::initView()。我试图尽可能好地“复制”对象结构,尤其是 print_r() 说它们应该是相同的对象。 (当然不是,但所有转储和对象结构都是相同的)。视图在我的引导类中的 _initView() 中设置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多