2011-07-25 6 views
0

この問題について多くの例があります。私はそれらのすべてを読んでいると思います。少なくとも私はそう感じます。ちょっと混乱しました。顧客のフロントエンドダッシュボード全体を変更し、追加の方法でそれを拡張する最良の方法はどのようになっているのかをより良く理解することができます。私はこれでリッテビットを貼りました、多分これは間違った方法です、おそらく、うまくいけばあなたは正しい方法を見つけるのを助けることができます。Magentoはコントローラーをオーバーロードしています

すべての必要なファイルは次の場所にあります。

アプリ/コード/ローカル/会社/お客様の/ etc/config.xmlに

アプリ/コード/ローカル/会社/顧客/コントローラ/ AccountController

アプリ/コード/ローカル/会社/顧客/コントローラ/ IndexController.php

の.php

:上記のコードが動作している

<frontend> 
    <routers>  
     <customer> 
      <use>standard</use> 
      <args> 
      <module>Company_Customer</module> 
      <frontName>customer</frontName> 
      </args> 
     </customer> 
    </routers> 
</frontend> 

、オーバーロードクラスは、以下の機能が実行されますによって上書き

domain.com/customer/

:気圧私は、これらのパスのと遊びます

function indexAction();

とパス:domain.com/customer/またはdomain.com/customer/index/が機能しています。

これまでのところ、とても良いです。しかし、私は他のすべての経路とその機能も必要としています。ここ

アプリ/コード/コア/メイジ/顧客/コントローラ/ AccountController.php

とだ: 通常、次のパスに実行され、ルーティングされdomain.com/customer/account/パス、要点は、AccountControllerをロードして実行するか、 IndexController.phpクラスに新しいメソッドでロードすることです。 function accountAction();とMagentoルーティング を上記のコアパスに停止しますか?/

アプリ/コード/ローカル/会社/顧客/コントローラが

多分AccountController.php:またはそれはより良い私がすることによりに、私自身のモジュールにMagentoのルータを書き換えたこの方法を行うことです他のいくつかの方法がありますが、私のルーターが機能していません。

<frontend> 
    <routers> 
     <customer_account> 
     <use>standard</use> 
     <args> 
     <module>Company_Customer_Account</module> 
     <frontName>customer_account</frontName> 
     </args> 
     </customer_account> 
    </routers> 
</frontend> 

EDIT:

これはエラーからです。ログ:

2011-07-25T10:36:46+00:00 ERR (3): Warning: include() [<a href='function.include'>function.include</a>]: Failed opening 'Mage/Customer/AccountController.php' for inclusion (include_path='/html/magento/app/code/local:/html/magento/app/code/community:/html/magento/app/code/core:/html/magento/lib:.:/usr/local/php/lib/php:/usr/local/php/lib/php/PEAR') in /html/magento/lib/Varien/Autoload.php on line 93 

これは、ルータが動作しているが、ファイルが見つかりませんでした。

どのような提案も素晴らしいでしょう。ありがとう!

--------------------------------------------

---------------- UPDATE ----------------

------ --------------------------------------

ご返信ありがとうございます。

<rewrite> 
    <Company_Customer_Account> 
     <from><![CDATA[#^/customer/account/#]]></from> 
     <to>/customer/account/</to> 
    </Company_Customer_Account> 
</rewrite> 

とあなたのコードを持つ::私は出回っ前に、グローバルセクションの代替書き換えを試してみました

<rewrite> 
    <Company_Customer_Account> 
     <from>/customer/account/index/</from> 
     <to>/customer/account/index/</to> 
    </Company_Customer_Account> 
</rewrite> 

両方が私が欠けているものを、動作しないのですか?

ここAccountController.php

<?php 

//require_once 'Mage/Customer/controllers/AccountController.php'; 

class Extension_Modul_AccountController extends Mage_Customer_AccountController { 

    # Overloaded indexAction 
    public function indexAction() 
    { 
     echo "executed"; 
     parent::indexAction(); 
    } 
} 
+0

を私は...あなたが適切に元のファイルにリダイレクトされていなかったと思うエラーがそれを見つけることができなかったと述べているよう '魔道士/ customer/accountcontroller.php'を読み込みたいのですが、 'app/code/core/Mage/Customer/controllers/AccountController.php'を読み込みたいのですが、必要なものにリダイレクトされていることを確認してください – Vijay

+0

@kvijayhariええ、元のファイルにリダイレクトします。私がしたいのは、 'app/code/local/Company/Customer/controllers/AccountController.php'にある独自のコントローラをインクルードすることだけです。あなたが言ったように 'mage/customer/accountcontroller.php'にファイルが見つかりませんでした。これは私のモジュールディレクトリに**フォルダ**がないためです。しかし、正しいものを手に入れるためには、何をしなければならないのですか? – tecmec

+0

それは動作していないことをどのように知っていますか?以前の呼び出しを単独で置き換えている可能性がありますので、その違いはわかりません。私は問題がfrontnameであると思うそれは顧客である必要があり、1つのモジュールbtwのための1つのfrontnameがあるはずです。さらに、indexAction()を使用してAccountController.phpが必要です。 – Nasaralla

答えて

1

あなたの前の名前です:「customer_accountは」第二の例では「顧客の前にようにする必要があります。

domain.com/customer/を実行すると、自動的にIndexController - > indexAction()が参照されます。

domain.com/customer/accountを取得するには、同様に行うことができます。ここでのaccountはaccountActionではなくAccountControllerです。

パスシステムは通常、Module/SomeController/someActionに似ています。

またあなたのようなSTH、あなたの設定グローバルタグに追加することができます。

<rewrite><module_control_action><from>/module/control/action/</from><to>/mymodule/somecontrol/someaction/</to></module_control_action></rewrite> 
+0

上記の「 customer_account」を「 customer」に変更した場合、私の投稿は – tecmec

+0

に更新されました**ルータは** Company/Customer/controllers/IndexController.php **の既存のコントローラをすべて呼び出すと思いますが、これら2つのコントローラを並列に実行する方法はありませんか? – tecmec

+0

同じモジュールコントローラを呼び出しますが、domainのように呼び出すとします。com/customer/accountであれば、AccountController、indexActionに行きます。 – Nasaralla

関連する問題