Routes 模块(而非控制器)的yii2路由配置

Routes 模块(而非控制器)的yii2路由配置,routes,yii2,Routes,Yii2,我需要将所有模型和控制器(SiteController除外)配置为模块。我已设法使简单视图正常工作,但无法处理其他控制器操作 要详细说明我所说的内容,路线应如下所示: example.com => app/site/index example.com/page => app/modules/page/default/index example.com/page/<slug> => app/modules/page/default/view/<slug>

我需要将所有模型和控制器(SiteController除外)配置为模块。我已设法使简单视图正常工作,但无法处理其他控制器操作

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

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

提前谢谢

如果您的模型、控制器和视图像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 
对于url,不要直接调用,而是使用UrlHelpers

use yii\helpers\Url;

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

通过这种方式,如果您的模型、控制器和视图的编码类似于Yii2模块,则url将根据urlManager中的配置正确生成,而不需要特殊的路由配置。。您应该在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 
对于url,不要直接调用,而是使用UrlHelpers

use yii\helpers\Url;

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

通过这种方式,url是根据urlManager中的配置正确生成的

我理解这一点,但正如您所看到的,当我这样配置我的模型和控制器时,url中需要额外的
默认
控制器参数才能使其工作。我想从URL中删除该部分。更重要的是,pretty url目前不适用于该视图。例如
site.com/module/controller/action?id=1
正在工作,但
site.com/module/controller/action/1
不工作。有什么想法吗?在config/main.php组件中发布您的urlManager配置我已经更新了原始帖子。或者我应该在每个模块配置中添加额外的路由规则吗?您能给我看一个如何调用/调用site.com/module/controller/action/1 url的示例吗?site.com/module/controller/action/1将被调用为site.com/module/action/1,因此没有控制器部分。实际上,我之所以能让它工作,是因为,唯一的一点是这个解决方案不接受漂亮的URL id变量传递。例如
site.com/module/action?id=1
起作用,但
site.com/module/action/1
不起作用。我理解这一点,但正如您所看到的,当我像那样配置模型和控制器时,URL中需要额外的
默认
控制器参数才能起作用。我想从URL中删除该部分。更重要的是,pretty url目前不适用于该视图。例如
site.com/module/controller/action?id=1
正在工作,但
site.com/module/controller/action/1
不工作。有什么想法吗?在config/main.php组件中发布您的urlManager配置我已经更新了原始帖子。或者我应该在每个模块配置中添加额外的路由规则吗?您能给我看一个如何调用/调用site.com/module/controller/action/1 url的示例吗?site.com/module/controller/action/1将被调用为site.com/module/action/1,因此没有控制器部分。实际上,我之所以能让它工作,是因为,唯一的一点是这个解决方案不接受漂亮的URL id变量传递。例如
site.com/module/action?id=1
起作用,但
site.com/module/action/1
不起作用。