4

这是我的控制器

<?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>

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

4

1 回答 1

14

如果您的操作被正确调用(显示了 echo 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 下

于 2012-08-08T12:38:21.283 回答