这部分yii2
配置有点棘手,所以我真的很感激,如果有人告诉我正确的方法,以及为什么我尝试的是错误的。
我有一个名为Admin
的模块,这个模块有很少的控制器,当然它采用了视图结构的主要布局,所以布局中生成的所有链接都可以在模块中使用,所有看起来都很好但有一点,如果链接在模块中呈现,它们都将在所有这些链接中具有模块路径..我需要将它们路由到模块之外..
我需要将它们路由到模块外部的所有链接都具有以下模式:
<controller>/<action>
而模块有这种模式:
admin/<controller>/<action>
到目前为止,我已尝试在配置中添加Url
规则,如下所示:
'rules'=>[
'<module:\w+>/<controller:\w+>/<action:\w+>'=>'<module>/<controller>/<action>',
//Also tried this: admin/<controller\w+>/<action:\w+>
]
但所有链接仍然以相同的方式生成..当模块中生成链接时,它们都具有这样的模式:admin/<controller>/<action>
当它们应该是这样的时候:@root/<controller>/<action>
{1}}
答案 0 :(得分:3)
假设您仍然使用默认网址规则,则您的网址应以前导斜杠开头,例如/site/about
而不是site/about
。来自Url::toRoute()的文档:
路线可以是绝对路线也可以是相对路线。绝对路线有一个前导斜线(例如
/site/index
),而相对路线没有(例如site/index
或index
)...
如果路线没有前导斜线(例如
site/index
),则它被认为是相对于当前模块的路线,并且将作为模块uniqueId
的前缀。
答案 1 :(得分:0)
来自个人项目的自定义规则示例:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'showScriptName' => false,
'enablePrettyUrl' => true,
'rules' => array(
'register' => 'user/registration/register',
'login' => 'user/security/login',
'logout' => 'user/security/logout',
'home' => 'site/index',
'support' => 'contact/submit',
'faq' => 'site/faq',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],
这将转到您应用中的主配置文件。