试图禁用zend中的布局



我尝试在zend动作中禁用布局:

$this->_helper->layout->disableLayout();

但是它不工作:

 Fatal error: Call to undefined method Application_Controller_Helper_Layout::disableLayout() in application/controllers/AssetController.php on line 18

我认为是,因为我做了我自己的帮手。

Bootsrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initMyActionHelpers()
    {
        $this->bootstrap('frontController');
        $layout = Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');
        Zend_Controller_Action_HelperBroker::addHelper($layout);
    }
}

application.ini

resources.frontController.actionhelperpaths.Application_Controller_Helper = APPLICATION_PATH "/controllers/helpers"

和我的助手

class Application_Controller_Helper_Layout extends Zend_Controller_Action_Helper_Abstract
{
    public function preDispatch()
    {
    }
}

谢谢!

如果你想重写Zend默认布局助手,请扩展Zend_Layout_Controller_Action_Helper_Layout.

class Application_Controller_Helper_Layout extends Zend_Layout_Controller_Action_Helper_Layout

如果您没有在自己的helper中覆盖它,那么您仍然可以使用默认的disableLayout()函数。

试着使用:

class Application_Controller_Helper_Layout extends Zend_Layout_Controller_Action_Helper_Layout
{
    public function preDispatch(){}
    public function disableLayout(){
        echo "I won't disable layout anymore, because I overwrote the action with displaying this string.";
    }
}

最新更新