【问题标题】:Zend - how to disable layout on a given action?Zend - 如何禁用给定动作的布局?
【发布时间】:2011-05-16 07:32:02
【问题描述】:

我有以下控制器,除其他方法外,它还有这个:

class EquipasController extends OccControllerAction {

    public function listaAction()
    {    
        $this->_helper->viewRenderer->setNoRender(true);
        $this->_helper->layout->disableLayout();
    }
}

当我这样做时,我期待着: http://www.example.com/equipas/lista/

控制器将执行,我将在我的视口上看不到布局渲染。

但是,事实并非如此。我得到了我的主页。

我们通常在 ZF 的哪个位置说:如果一个操作不存在,则应该出现一个主页?

注意: 如果,而不是: http://www.example.com/equipas/lista/

我愿意, http://www.example.com/equipas/adasdas21232131/ 不存在的。

我得到相同的主页呈现。

出现这种行为的原因可能是什么?

一个 Zend 新手, 内存

【问题讨论】:

  • 我的问题有问题吗?我应该提供更多细节吗?我在说什么假话吗?请告诉我。卡在这里。
  • 您能具体说明您的问题吗?是要禁用布局还是要在操作不存在时重定向到主页?
  • 谢谢。不。当操作不存在时,我不想禁用布局或重定向到主页。我想要的是,当我们这样做时:mysite.com/equipas/lista(所以,当我们调用动作 lista 时)不使用布局。为什么?例如,对于 ajax 调用。谢谢。
  • 已解决。我们还必须在 Acl 上启用该操作。否则不会运行任何东西,因此布局不会禁用。

标签: zend-framework layout views zend-view zend-layout


【解决方案1】:

这可能无法直接回答您的问题(您似乎已经解决了),但要禁用布局并为 AJAX 请求提供不同的视图,请考虑使用 AjaxContext 操作助手。

【讨论】:

  • 这会帮助我解决一些深层链接问题吗?
【解决方案2】:

在你的控制器中添加这个:

public function preDispatch(){
        $this->_helper->layout()->disableLayout(); 
        $this->_helper->viewRenderer->setNoRender(true);
    }

【讨论】:

    【解决方案3】:

    在zf2中

     public function indexAction()
        {    
            echo "json"
            return $this->getResponse();
        }
    

    【讨论】:

      猜你喜欢
      • 2012-10-22
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 2012-04-21
      • 1970-01-01
      • 2012-09-24
      • 2014-09-17
      相关资源
      最近更新 更多