大家好我已经创建了一个控制器。我希望此控制器中的每个操作都呈现布局以排除页眉和页脚。是否有可能通过xml。
<adminhtml_trips_index>
<remove name="header" />
<remove name="menu" />
<remove name="footer" />
不对每个动作执行此操作?
还有像_beforeRenderLayout这样的事件观察者。
我目前唯一的解决方案是在每个操作中的$ this-&gt; loadLayout()之后调用我自定义的exclude_redundant_blocks()函数。
答案 0 :(得分:4)
为什么不覆盖自己控制器中的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)
{
$this->getLayout()->getUpdate()->addHandle('custom_handle')
return parent::loadLayout($ids, $generateBlocks, $generateXml);
}
上面的代码未经测试,但理论上它应该可行。