1


こんにちは、私はMagentoモジュールを書いています。そのために、モジュールのハンドラー内のコアブロックを呼び出したいと思います。コアブロックを変更または拡張したくありません。レイアウトハンドラー内で呼び出したいだけです。助言がありますか?

挿入したいブロックはにあります

adminhtml/sales/order/view/history.php

次のハンドラーは、上記のHistrory.phpブロックを含むsales.xmlにあります

 <adminhtml_sales_order_addcomment>
        <block type="adminhtml/sales_order_view_history" name="order_history" template="sales/order/view/history.phtml" output="toHtml"/>
    </adminhtml_sales_order_addcomment>

これは私のlayout.xmlです

       <orderadmin_adminhtml_orderadmin_search> 
        <update handle="orderadmin_orderadmin_search" />
         <reference name="content"> 
     <!-- I want to insert the following block --> 
        <block type="adminhtml/sales_order_view_history" name="order_history" template="sales/order/view/history.phtml" output="toHtml"/> 
</reference> 
</orderadmin_adminhtml_orderadmin_search>

ただし、次のエラーが発生します。

致命的なエラー:79行目の\ app \ code \ core \ Mage \ Adminhtml \ Block \ Sales \ Order \ View \ History.phpにある非オブジェクトのメンバー関数getId()を呼び出す

4

2 に答える 2

1

コードで次のようにする必要があります。

<!-- this is my handler -->
<orderadmin_adminhtml_orderadmin_search>
        <update handle="orderadmin_orderadmin_search" />
        <reference name="content">
            <block type="orderadmin/adminhtml_search" name="search_order" />
            <!-- I want to call the core block here -->

必要なブロックをコア レイアウトから取得し、そのままここに貼り付けるとレンダリングされます

        </reference>
    </orderadmin_adminhtml_orderadmin_search>
于 2013-03-04T10:43:06.593 に答える
1

The issue is nothing to do the with xml layout, that is infact correct and will work as it is.

the issue is because this block is expecting an order to be in the registry, to enable it to grab the history.

You should set an order (the order you wish to use for viewing history) in the registry inside either your controller, or your modules block before the history block is rendered.

// load your order here..
Mage::register('sales_order', $order);
于 2013-03-04T11:59:15.017 に答える