0

ここから生成されたレポートを編集しようとしていますexample.com/index.php/admin/sales_order/index/。右側のドロップダウンに新しいレポートを追加する必要があります。

URLを介してこのページをコントローラーまで追跡し、クラスをダンプしました。 app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php indexAction()このクラスを取得したExt4mage_Html2pdf_Sales_OrderControllerので、モジュールによってオーバーライドされていることがわかります。この場合、Ext4mage Html2pdf モジュールです。

このコントローラーは、次を使用して pdf メソッドを上書きするだけです。

require_once BP.'/app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php';
class Ext4mage_Html2pdf_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController{
//etc }

それで、コミュニティにあるのでこれを上書きすることを望んで、新しいモジュールをローカルに作成しました。 app/code/local/Daves/OrderModule/controllers/Sales/OrderController.phpそして以下に配置。

require_once 'Mage'.DS.'Adminhtml'.DS.'controllers'.DS.'Sales'.DS.'OrderController.php';
require_once BP.'/app/code/community/Ext4mage/Html2pdf/controllers/Sales/OrderController.php';

class Daves_OrderModule_Sales_OrderController extends Ext4mage_Html2pdf_Sales_OrderController{

    public function indexAction(){

        die();

        return parent::indexAction();
    }

}

私の予想される機能は、管理者で販売/注文ページをリロードすると、空白のページが表示されることですが、そうではありません。これは、コントローラーがロードされていないことを意味します。

私の IDE は、クラスが拡張されていることを示しており、Ext4mage_Html2pdf コントローラーdie()のメソッドに a を配置すると、期待どおりに動作します。indexAction()何らかの理由でコントローラーが欠落しているだけです。

ブラウザでコントローラーを直接叩こうとするとexample.com/admin/daves_ordermodule/sales_order/index、404 がスローされます。

代わりにブロックを上書きしようとする必要がありますか?

<rewrite>主に、それらが必要かどうか、またはどこに行くかわからないため、構成にファンキーな更新ハンドルを作成していません。Magento が Zend から取った xml の恐ろしい使い方を知っているので、ここに自分の構成を貼り付けます。


app/etc/modules/Daves_OrderModule.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Daves_OrderModule>
            <active>true</active>
            <codePool>local</codePool>
            <depends> <!-- same as in the /app/etc/Mage_All.xml -->
                <Mage_Reports/>
                <Mage_Adminhtml/>
                <Ext4mage_Html2pdf/>
            </depends>
        </Daves_OrderModule>
    </modules>
</config>

app/code/local/Daves/OrderModule/etc/config.xml 0.1

    <global>
        <blocks>
            <daves_ordermodule> <!-- this is the class group  and must be lowercase-->
                <class>Daves_OrderModule_Block</class> <!-- this is how you access it -->
            </daves_ordermodule>
        </blocks>
        <helpers>
            <daves_ordermodule>
                <class>Daves_OrderModule_Helper</class> <!-- Mage::helper('squaresphere_module/<helper>'); -->
            </daves_ordermodule>
        </helpers>
        <models>
            <daves_ordermodule>
                <class>Daves_OrderModule_Model</class> <!-- Mage::getModel('squaresphere_module/<model>'); -->
            </daves_ordermodule>
        </models>

    </global>

    <!-- How to get to the module from the browser -->
    <admin>
        <routers>
            <daves_ordermodule> <!-- My unique class group -->
                <use>admin</use> <!-- which router class? -->
                <args>
                    <module>Daves_OrderModule</module> <!-- assumes /controllers -->
                    <frontName>daves_ordermodule</frontName> <!-- what is on the url -->
                </args>
            </daves_ordermodule>
        </routers>
    </admin>

</config>

app/code/community/Ext4mage/Html2pdf/etc/config.xml特にノード

<admin>
    <routers>
        <html2pdf>
            <use>admin</use>
            <args>
                <module>Ext4mage_Html2pdf</module>
                <frontName>html2pdf</frontName>
            </args>
        </html2pdf>
        <emailattachments>
            <args>
                <modules>
                    <Ext4mage_Html2pdf before="Fooman_EmailAttachments">Ext4mage_Html2pdf</Ext4mage_Html2pdf>
                </modules>
            </args>
        </emailattachments>
        <adminhtml>
            <args>
                <modules>
                    <Ext4mage_Html2pdf before="Mage_Adminhtml">Ext4mage_Html2pdf</Ext4mage_Html2pdf>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
4

1 に答える 1

2

フロントエンド コントローラーがないと仮定して、次のように構成を調整します。

<!-- How to get to the module from the browser -->
<admin>
    <routers>
        <adminhtml> <!-- My unique class group -->
            <args>
                <modules>
                    <Daves_Om before="Ext4mage_Html2pdf">Daves_OrderModule</Daves_Om>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

これにより、Mage_Adminhtml モジュールのフロントネームの下に別の controllers ディレクトリが追加されます。from の値<Daves_Om>は、基本的にテキスト ノード + "controllers" にマップされるためapp/code/(configured codepool)/Daves/OrderModule/controllers/、通常のルート マッチングが適用されます。

于 2012-04-26T16:48:57.693 に答える