0

拡張機能のコントローラーを上書きしようとしています....カートコントローラーを上書きしています。

現在カートコントローラーを上書きしている拡張機能は次のとおりです。

Innoexts/Warehouse/controllers/Checkout/CartController.php

これを行う Innoexts モジュールの構成エントリは次のとおりです。

<frontend>
    <routers>
        <checkout>
            <args>
                <modules>
                    <Innoexts_Warehouse before="Mage_Checkout">Innoexts_Warehouse_Checkout</Innoexts_Warehouse>
                </modules>
            </args>
        </checkout>
    </routers>

...blah...blah...

</frontend>

innoext cartcontroller ファイルの先頭は次のとおりです。

require_once 'Mage/Checkout/controllers/CartController.php';
class Innoexts_Warehouse_Checkout_CartController extends Mage_Checkout_CartController {

このコントローラーで上書きしたい:

Myco/Warehousemod/controllers/Checkout/CartController.php

コントローラーファイルの先頭は次のとおりです。

require_once 'Innoexts/Warehouse/controllers/Checkout/CartController.php';
class Myco_Warehousemod_Checkout_CartController extends Innoexts_Warehouse_Checkout_CartController {

作成された構成エントリは次のとおりです。

<global>

...blah...blah...

<rewrite>
        <myco_warehousemod_checkout_cart>
            <from><![CDATA[#^/checkout/cart/#]]></from>
            <to>/warehousemod/checkout_cart/</to>
        </myco_warehousemod_checkout_cart>
    </rewrite>

</global>


<frontend>

<routers>
        <checkout>
    <args>
        <modules>
                  <Myco_Warehousemod before="Innoexts_Warehouse_Checkout">Myco_Warehousemod_Checkout</Myco_Warehousemod>
                </modules>
            </args>
        </checkout>
    </routers>

...blah...blah...

</frontend>

今、チェックアウト/カートの URL で 404 not found エラーが発生しています....どこが間違っているかわかる人はいますか? オンラインリソースは非常に異なります...そして混乱します!! 問題は、上書きコントローラーを上書きしようとしている可能性があります...??

前もって感謝します...

4

4 に答える 4

1

この部分は Magento の古いバージョン (1.4 より前だと思います) で使用されていましたが、構成ファイルでこのように書き換えられたコントローラーを拡張する場合は、構成で同じことを行う必要があります。

<rewrite>
    <myco_warehousemod_checkout_cart>
        <from><![CDATA[#^/checkout/cart/#]]></from>
        <to>/warehousemod/checkout_cart/</to>
    </myco_warehousemod_checkout_cart>
</rewrite>

新しいバージョンは以前の部分のみを使用するため、次のようにする必要があります。

<routers>
  <checkout>
    <args>
        <modules>
           <Myco_Warehousemod before="Innoexts_Warehouse">Myco_Warehousemod_Checkout</Myco_Warehousemod><!-- just the name of the module Innoexts_Warehouse the overridden folder will be taken from the part after the name of your module so Magento will look in app/local/Myco/Warehousemod/controllers/Checkout/* and load all the controllers from there -->
        </modules>
    </args>
  </checkout>
</routers>
于 2012-05-30T15:17:04.273 に答える
1

最初の書き換えを削除する必要があります:

<rewrite>
    <myco_warehousemod_checkout_cart>
        <from><![CDATA[#^/checkout/cart/#]]></from>
        <to>/warehousemod/checkout_cart/</to>
    </myco_warehousemod_checkout_cart>
</rewrite>

一部の人々は、チュートリアルを書くのをやめるべきだと思います....中途半端な SEO の取り組みで Web を混乱させる....

于 2012-05-30T11:43:53.787 に答える
0

拡張機能と考えられる解決策 (上記のケースと同様) の間の競合について知りたい場合は、次のリンクを参照してください。

http://www.webshopapps.com/blog/2010/11/resolving-magento-extension-conflicts/

http://sweettoothrewards.com/wiki/index.php/Resolving_extension_conflicts

http://magebase.com/magento-tutorials/magento-extension-clashes-winners-and-loosers/

http://www.magestore.com/blog/2011/12/21/magento-methods-to-resolve-the-module-conflicts-in-magento/

于 2012-05-31T19:29:21.507 に答える