2016-06-14 106 views
0

我需要配置我所有的模型和控制器,除SiteControllers作爲模塊。我設法獲得了簡單的視圖,但無法繞過其他控制器操作。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 

前三正在努力,他們應該,但對於以下?當前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', 
    ], 

路由使用如自動分配:

myproject/backend/web/index.php/migr/my-action 

的網址,而不要direcly調用,但以這種方式正確生成URL中使用UrlHelpers

use yii\helpers\Url; 

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

尊重配置在urlManager

+0

我明白,但你可以看到,如果我在配置模型和控制器,URL中需要額外的'default'控制器參數才能工作。我想從URL中丟失該部分。更重要的是,漂亮的網址目前不適用於該視圖。例如'site.com/module/controller/action?id = 1'正在工作,但是'site.com/module/controller/action/1'不工作。有任何想法嗎? – jeesus

+0

在config/main.php組件中發佈您的urlManager配置 – scaisEdge

+0

我已更新原始帖子。或者我應該在每個模塊配置中添加額外的路由規則? – jeesus