Magento如何为所有控制器定义布局句柄

时间:2014-03-10 13:31:34

标签: magento layout

我正在寻找解决方案来定义整个控制器的布局句柄而不是控制器动作。例如,我想定义:

<mymodule_index></mymodule_index>

而不是

<mymodule_index_index></mymodule_index_index>
<mymodule_index_someaction></mumodule_index_someaction>

感谢。

4 个答案:

答案 0 :(得分:1)

您可以通过运行以下来添加布局句柄:

$update = $this->getLayout()->getUpdate(); $update->addHandle('mymodule_index')

然后,您可以将此段代码添加到控制器中受保护的“_initHandles”函数中,该函数将针对每个操作运行。

答案 1 :(得分:1)

在我的控制器中,我已经(重新)实现了这种方法

public function loadLayout($handles = null, $generateBlocks = true, $generateXml = true)
    {
        return parent::loadLayout(array('default','mymodule_index'),$generateBlocks,$generateXml);
    }

将为每个控制器的操作添加一个名为mymodule_index的更新句柄(不会丢失默认句柄)。 你需要在每个控制器的动作中调用loadLayout(),但这就是magento的工作原理......

答案 2 :(得分:0)

请尝试以下代码....

 public function indexAction(){
    {
    ... 
    $update = $this->getLayout()->getUpdate();
     $update->addHandle('mymodule_index');
     $this->loadLayoutUpdates();
     $this->generateLayoutXml()->generateLayoutBlocks();
     $this->renderLayout();

    }
    public function samelocationAction(){
    {
    ... 
    $update = $this->getLayout()->getUpdate();
     $update->addHandle('mymodule_index');
     $this->loadLayoutUpdates();
     $this->generateLayoutXml()->generateLayoutBlocks();
     $this->renderLayout();

    }

答案 3 :(得分:0)

我找到了解决方案。在每次下一次更新中,您必须提供<update handle="" />,如下所示:

<companies_catalog>
    <label>Companies (All Pages)</label>
    <reference name="root">
        <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
    </reference>
    <reference name="left">
        <block type="businesscategory/companies_navigation" name="companies.navigation" before="-" template="businesscategory/companies/navigation.phtml" />
    </reference>
</companies_catalog>

<companies_catalog_index>
    <label>Companies (All Pages)</label>
    <update handle="companies_catalog" />
    <reference name="content">
        <block type="businesscategory/companies_list" name="companies.list" template="businesscategory/companies/list.phtml" />
    </reference>
</companies_catalog_index>

<companies_catalog_view>
    <label>Company page</label>
    <update handle="companies_catalog" />
    <reference name="content">
        <block type="businesscategory/companies_view" name="company.info" template="businesscategory/companies/view.phtml" />
    </reference>
</companies_catalog_view>