我想将Zend_View放入Zend_Registry,我遇到了这个简单任务的麻烦。 Zend_View在application.ini中初始化为资源:
resources.view.encoding = "UTF-8"
resources.view.contentType = "text/html; charset=UTF-8"
resources.view.doctype = "HTML4_STRICT"
resources.view.helperPath.ZendX_JQuery_View_Helper = "ZendX/JQuery/View/Helper"
它工作正常,然后我想通过在Bootstrap.php中添加方法将其放入注册表中。
protected function _initView()
{
$view = $this->getResource('view');
Zend_Registry::set('view', $view);
return $view;
}
刷新后我在View初始化中遇到错误:
Catchable fatal error: Argument 1 passed to ZendX_JQuery::enableView() must be an instance of Zend_View_Interface, null given, called in D:\projekty\xxx\library\ZendX\Application\Resource\Jquery.php on line 91 and defined in D:\projekty\xxx\library\ZendX\JQuery.php on line 104
我做错了什么?我没有在
之前得到那个jQuery错误答案 0 :(得分:0)
初始化资源有两种不同的方法:在application.ini文件中并在bootstrap类中使用_init方法。引导应用程序时,首先运行_init方法,然后运行ini文件资源。所以你的代码的问题是当$this->getResource('view')
运行时,视图资源还不存在,所以这将返回null。然后,您将该null放在注册表中,这可能是以后错误的原因。
为什么你需要注册表中的视图对象并不是很清楚,所以也许你可以解释一下我们可以建议一个更好的方法。
答案 1 :(得分:0)
将_init方法称为其他内容......此处可能存在名称冲突。
protected function _initViewInRegistry() {
// run view resource
$this->bootstrap('view');
// put view resource in registry
Zend_Registry::set('view', $this->getResource('view'));
}
这在命名/语义方面有点难看,它可能更适合在完全设置注册表实例的注册表资源中。