将块添加到adminhtml_sales_order_view

时间:2014-07-06 09:13:31

标签: php magento

我正在尝试将块添加到magento

中的管理订单视图页面

我的布局更新

 <?xml version="1.0"?>
<layout>
    <adminhtml_sales_order_view>
        <reference name="order_tab_info">
            <block before="order_tab_info" type='vendor/additonal' name="ama_additonal_data" template="vendor/additonal.phtml" >
                <action method="setChild">
                    <name>order_info</name>
                    <block>order_info</block>
                </action>
            </block>
            <action method="setChild">
                <name>order_info</name>
                <block>ama_additonal_data</block>
            </action>
        </reference>
    </adminhtml_sales_order_view>
</layout>

我的街区是

class Vendor_ModuleName_Block_Sales_Order_View_AdditonalData extends Mage_Adminhtml_Block_Sales_Order_Abstract{

}

如果我在块文件中进行以下操作

public function __construct(){
 var_dump('hey');
 die;
}

页面停止显示,但看起来我的块不呈现

为什么?

1 个答案:

答案 0 :(得分:1)

您的布局代码不再有效。因为它有一些错误。我会指出我能看到的东西。

  1. 描述类型的块不存在

    您阻止类型为vendor/additonal。显然,它是由自定义模块定义的自定义块。这意味着您需要一个类名为Vendor_Modulename_Block_Additional的块,该块应在位置app/code/local/Vendor/Modulename/Block/Additional.php中定义。现在,您的块名称为Vendor_ModuleName_Block_Sales_Order_View_AdditonalData(位置未知,您未提供)。这意味着您在布局中定义的块未定义,magento将在您的日志中引发一些错误(如果您激活了日志)。

  2. 不必要的before声明

    请参阅alanstorm的答案THREAD。简而言之,您只能在两种情况下定义before属性。其中,最常用的案例是第一个案例。那是

      

    您的广告代码应位于parent block core/text_list类型下。

    此处保存自定义块的父块为order_tab_info块。它是一个magento核心定义块。因此,before属性不起作用。

  3. 您正在尝试将自定义块作为块的父级,保留块!!!

    在您的区块定义中,您尝试将order_tab_info区块设置为区块的子级。请注意,您已经在order_tab_info区域内。这意味着您的块现在是order_tab_info块的子节点。没有得到我的potrait?好。考虑一位女士带着孩子进入子宫的情况。假设孩子在说..

      “嘿,我是我母亲的真正母亲!!!!!”

    请参阅。其中没有逻辑。再次在order_tab_info块内,您再次将自定义块重新定义为其子块。就像,如果母亲(在上面的例子中)说

      “嘿,每个人,我现在带的孩子都是我的孩子”

    您认为重新定义它是否相关?每个人都能明白,那位女士携带的孩子显然是她的孩子,她是她的母亲。无需重新定义它。所以你在这里想做的事情是完全错误的。

  4. 尝试对magento的布局结构做一个好主意。

    祝你好运。