2016-06-14 4 views
0

SiteController以外のすべてのモデルとコントローラをモジュールとして設定する必要があります。私は単純なビューを動作させることに成功しましたが、他のコントローラのアクションで回避することはできません。yii2コン​​トローラの代わりにモジュールのルート設定

私が話している何を詳述すると、ルートは次のようにする必要があります:彼らが必要として

example.com => app/site/index 
example.com/page => app/modules/page/default/index 
example.com/page/<slug> => app/modules/page/default/view/<slug> 
example.com/submit/1 => app/modules/page/default/submit/1 

最初の3つが働いているが、何以下について?現在urlManagerは:

 'urlManager' => [ 
     'class' => 'yii\web\UrlManager', 
     'showScriptName' => false, 
     'enablePrettyUrl' => true, 
     'rules' => [   
      '<module:\w+>/<action:\w+>' => '<module>/default/<action>/view', 
      '<module:\w+>/<controller:\w+>' => '<module>/<controller>/index', 
      '<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>', 
      '<module:\w+>/<controller:\w+>/<action:\w+>/<id:\w+>' => '<module>/<controller>/<action>/view', 
     ], 
    ], 

ありがとうございます!

答えて

0

、モデル、コントローラやビューがYii2モジュールのようにコーディングされている場合は、..あなたは、単純なあなたのCONFI/main.php

などのモジュールセクションに適切なエントリを宣言する必要があり、特別なルートの設定は必要ありませんが必要です..私は私の個人的なベンダーの場所にモジュールMIGRを作成していると私は、ルーティングが自動的例えば使用して割り当てられ

のconfig/main.phpこのように
'modules' => [ 
    ........ 
    'migr' => [ // dfenx module for migration via web without console command 
     'class' => 'vendor\myVendorName\migr\Module', 
    ], 

をモジュールをsetted:

myproject/backend/web/index.php/migr/my-action 
をURLの

は直接使う起動しますが、正しく、私は私を設定するとき、私は、あること、しかし、あなたが見ることができるように理解urlManager

+0

で設定を尊重し、URLが生成され、このようにUrlHelpers

use yii\helpers\Url; Url::to(['module/controller/action', 'id' => $id]); 

を使用していませんそのようなモデルとコントローラーの場合、追加の 'default'コントローラーパラメーターがURLに必要です。私はURLからその部分を失いたいです。さらに、現在、かなりのURLが表示されていません。たとえば、 'site.com/module/controller/action?id = 1'は動作していますが、' site.com/module/controller/action/1'は動作しません。何か案は? – jeesus

+0

あなたのurlManager設定をconfig/main.phpコンポーネントに投稿してください。 – scaisEdge

+0

元の投稿を更新しました。または、各モジュール設定に追加のルーティングルールを追加する必要がありますか? – jeesus

関連する問題