模块的网址规则不起作用

时间:2015-11-05 02:55:39

标签: yii2

这部分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}}

2 个答案:

答案 0 :(得分:3)

假设您仍然使用默认网址规则,则您的网址应以前导斜杠开头,例如/site/about而不是site/about。来自Url::toRoute()的文档:

  

路线可以是绝对路线也可以是相对路线。绝对路线有一个前导斜线(例如/site/index),而相对路线没有(例如site/indexindex

     

...

     

如果路线没有前导斜线(例如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>',
            ),
        ],

这将转到您应用中的主配置文件。