4

私は現在、Magentoのカスタムモジュールに取り組んでいます。パッケージ、モジュール、ルーターの基本を理解し、モジュールのフロントエンド部分を構築しました。

しかし、私は今、物事の管理者側に移っています。ただし、管理者部分をルーターに追加して、関連するコントローラーを呼び出す方法に少し混乱しています。

私がこれらのルーターを作成したと想像してみましょう...

<frontend>
    <routers>
        <slider>
            <use>standard</use>
            <args>
                <module>Mypackage_Myodule</module>
                <frontName>Mymodule</frontName>
            </args>
        </slider>
    </routers> 
</frontend> 
<admin>
    <routers>
        <mymoduleadmin>
            <use>admin</use>
            <args>
                <module>Mypackage_Myodule</module>
                <frontName>Mymodule</frontName>
            </args>
        </mymoduleadmin>
    </routers>
</admin>

これらのルーターは両方ともcontrollers/IndexController.phpを呼び出そうとするため、同じ機能を使用すると思いますか?フロントエンドか管理者かに応じて、ルーターが異なるコントローラーを呼び出すように設定することはできますか?これも可能ですか、それともフロントエンドモジュールと管理モジュールを設定する必要がありますか?

これがSchoolBoyの質問である場合はお詫びしますが、少し混乱しています。実際には、フロントエンドと管理機能を備えたカスタムモジュールを設定する最も効率的な方法を知りたいだけです。

4

2 に答える 2

1

エリア(フロントエンドまたはadminhtml)に応じて、フロントエンドまたはadminhtmlルーターがディスパッチされます。したがって、フロントエンドとadminhtml、から拡張するフロントエンドコントローラ、およびから拡張
するadminhtmlに異なるコントローラファイルを使用している限り、混乱することを心配する必要はありません。Mage_Core_Controller_Front_ActionMage_Adminhtml_Controller_Action

フロントエンド/Adminhtmlルーターは次のように定義できます(単なる構文):

<frontend>
    <routers>
        <[module]>
            <use>standard</use>
            <args>
                <module>[Namespace]_[Module]</module>
                <frontName>[module]</frontName>
            </args>
        </[module]>
    </routers>
</frontend>
<admin>
    <routers>
        <[module]>
            <use>admin</use>
            <args>
                <module>[Namespace]_[Module]</module>
                <frontName>[module]</frontName>
            </args>
        </[module]>
    </routers>
</admin>

また、次の場所でフロントエンドコントローラーを作成できますapp/code/[codePool]/[Namespace]/[Module]/controllers/
。例:

<?php
//file: app/code/local/MagePsycho/Testmodule/controllers/IndexController.php
class MagePsycho_Testmodule_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction(){

    }
}

http://your-magento-url/testmodule/index/index
url:およびadminhtmlコントローラー からアクセスするには:app/code/[codePool]/[Namespace]/[Module]/controllers/Adminhtml/
例:

<?php
//file: app/code/local/MagePsycho/Testmodule/controllers/Adminhtml/IndexController.php
class MagePsycho_Testmodule_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
{
    public function indexAction(){

    }
}


URLからアクセスするには: http://your-magento-url/testmodule/adminhtml_index/index
(adminhtmlコントローラーを分離するためのAdminhtmlフォルダーが表示されます)

これがあなたにいくつかの情報を与えたことを願っています。
ありがとう

于 2012-08-03T09:38:10.127 に答える
1

私の同様の質問を見てください:カスタムモジュールの管理ルート

私も使用することをお勧めします

<admin>
 <routers>
   <adminhtml>
     <args>
       <modules>
         <modulename before="Mage_Adminhtml">Namespace_Module_Adminhtml</modulename>
       </modules>
     </args>
   </adminhtml>
 </routers>
</admin>

これにより、ルートで一部を使用することを回避できるadminhtmlため、モジュールのバックエンドURLには、コアモジュールのようなシンプルでクリーンなURLが含まれます。admin/mymodule

于 2012-08-03T11:12:54.113 に答える