ZF:禁用操作帮助程序视图渲染器


ZF: disable action helper viewRenderer

为了提供一个ajax操作,我执行以下操作:

    public function preDispatch()
    {
        if ($this->getRequest()->isXmlHttpRequest()) {
                Zend_Controller_Action_HelperBroker::removeHelper('viewRenderer');
                Zend_Layout::getMvcInstance()->disableLayout();
        }           
    }

但响应附带以下错误:在路径中找不到脚本"async/tax.phtml"(/var/www/app/trunc/application/views/scripts/:./views/scripts/(

为什么不使用 Ajaxcontext 操作助手? http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch

// supposedly in your async controller
public function init() {
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('tax', 'html')
}

然后将视图命名为"async/tax.ajax.phtml",并确保 ajax 调用要求 html 格式。

这样,您甚至可以调整代码,以使用相同的控制器/操作自动响应 json、phtml 或 xml。

  1. 您是否检查过/var/www/app/trunc/application/views/scripts/中是否存在该文件tax.phtml.
  2. 如果存在,则tax.phtml文件底部的echo exit;位置。