Magento 删除控制器中每个操作的块

Magento 删除控制器中每个操作的块,magento,Magento,大家好,我已经创建了一个控制器。我希望此控制器中呈现布局的每个操作都排除页眉和页脚。是否可以通过xml实现这一点 <adminhtml_trips_index> <remove name="header" /> <remove name="menu" /> <remove name="footer" /> 不为每个动作都这样做 还有一些事件观察器,比如_beforeRenderLayout 目前我唯一的解决方案是在每

大家好,我已经创建了一个控制器。我希望此控制器中呈现布局的每个操作都排除页眉和页脚。是否可以通过xml实现这一点

<adminhtml_trips_index>
    <remove name="header" />
    <remove name="menu" />
    <remove name="footer" />

不为每个动作都这样做

还有一些事件观察器,比如_beforeRenderLayout


目前我唯一的解决方案是在每个操作中的$this->loadLayout()之后调用我定制的exclude\u redundant\u blocks()函数。

为什么不在您自己的控制器中重写
loadLayout
方法并在此之后排除块,而不是在每个操作中都这样做

大概是这样的:

public function loadLayout($ids=null, $generateBlocks=true, $generateXml=true)
{
    parent::loadLayout($ids, $generateBlocks, $generateXml);
    //remove blocks here
    return $this;
}
或者,另一种方法是创建一个客户布局句柄,以删除不需要的块

<custom_handle>
    <remove name="header" />
    <remove name="menu" />
    <remove name="footer" />
</custom_handle>

上面的代码未经测试,但理论上它应该可以工作。

为什么不在您自己的控制器中重写
loadLayout
方法并排除之后的块,而不是在每个操作中都这样做

大概是这样的:

public function loadLayout($ids=null, $generateBlocks=true, $generateXml=true)
{
    parent::loadLayout($ids, $generateBlocks, $generateXml);
    //remove blocks here
    return $this;
}
或者,另一种方法是创建一个客户布局句柄,以删除不需要的块

<custom_handle>
    <remove name="header" />
    <remove name="menu" />
    <remove name="footer" />
</custom_handle>

上面的代码未经测试,但理论上它应该可以工作。

这确实是最整洁的方法。我会为你的回答做同样的回答。我不知道为什么我没有想到覆盖loadLayout。另外,手柄的加载是我不知道的非常好的模式。这确实是最整洁的方法。我会为你的回答做同样的回答。我不知道为什么我没有想到覆盖loadLayout。另外,手柄的负载是非常好的模式,我不知道。