yii2路由配置模块而不是控制器

时间:2016-06-14 14:37:58

标签: routes yii2

我需要将除SiteControllers之外的所有模型和控制器配置为模块。我设法让简单的视图工作,但无法解决其他控制器操作。

详细说明我所说的内容,路线应如下:

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',
        ],
    ],

提前致谢!

1 个答案:

答案 0 :(得分: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 

网址不是直接调用,而是使用UrlHelpers

use yii\helpers\Url;

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

以这种方式正确生成url,尊重urlManager中的配置