我的布局未在我的Magento管理视图中加载

时间:2012-08-08 10:50:57

标签: magento

这是我的控制器

<?php
class Desbest_Brands_Adminhtml_BrandController extends Mage_Adminhtml_Controller_action {
    public function indexAction() {
        //echo "showing 123 works!";
        $this->loadLayout(); $this->renderLayout();
    }

这是我的布局

<?xml version="1.0"?>
<layout version="1.0.0">
<brands_adminhtml_brand_index>
    <reference name="content">
        <block type="brands/adminhtml_brand" name="brand" />
        <block type="newsletter/subscribe" name="left.newsletter" template="newsletter/subscribe.phtml"/>
    </reference>
</brands_adminhtml_brand_index>
</layout>

然而,当我在管理员中显示视图时,没有任何内容加载,甚至不是电子邮件订阅表单。

1 个答案:

答案 0 :(得分:14)

如果您的操作被正确调用(显示回显123),除缓存问题外,您的句柄可能有问题。

在您的操作中,尝试将此代码放在$this->loadLayout()

之后
var_dump(Mage::getSingleton('core/layout')->getUpdate()->getHandles());
die();

它将显示为该请求加载的所有句柄。

句柄是从fullActionName生成的,简单来说,我们可以说它生成为:

route + controller + action

看看你的config.xml。

如果您的config.xml如下:

<admin>
    <routers>
        <brands>
            <use>admin</use>
            <args>
                <module>Desbest_Brands</module>
                <frontName>brands</frontName>
            </args>
        </brands>
    </routers>
</admin>

对于您的操作,它将生成句柄:<brands_adminhtml_brand_index>

如果您的config.xml如下:

<admin>
    <routers>
        <brandsadmin>
            <use>admin</use>
            <args>
                <module>Desbest_Brands</module>
                <frontName>brands</frontName>
            </args>
        </brandsadmin>
    </routers>
</admin>

对于您的操作,它将生成句柄:<brandsadmin_adminhtml_brand_index>

更新

不要忘记在config.xml中定义管理布局,例如:

<adminhtml>
    <layout>
        <updates>
            <brandsadmin>
                <file>yourlayoutname.xml</file>
            </brandsadmin>
        </updates>
    </layout>
</adminhtml>

将它放在app / design / adminhtml / default / [default / youradmintheme] /layout/yourlayoutname.xml