我需要将除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',
],
],
提前致谢!
答案 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中的配置