创建多级Yii路线

时间:2019-06-20 12:46:09

标签: php yii url-routing yii2-advanced-app

我试图在YII1中使用正则表达式创建一个网址。 我想为“页面名称/用户名”创建网址。

我尝试过这样:

'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:w+>' => 'site/Profile',

,但是它不起作用。页面只是重新加载自身

当URL变为“ pagename / username”时,我想显示新页面。

2 个答案:

答案 0 :(得分:0)

我可以这样工作

'public/<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i>' => 'site/Profile'

看到我必须在开始时放置一个“ public”才能使其起作用,并删除i的+ w,我的“站点/配置文件”只是$ _REQUEST的print_r;

Array ( [pagename] => pagename [i] => username )

编辑:@ rob06的answer更好,只记得将其放在数组“规则”的开头

'rules'     => array(
     '<pagename:[\w-]+>/<i:\w+>'              => 'site/profile',
     '<controller:\w+>/<id:\d+>'              => '<controller>/view',
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
     '<controller:\w+>/<action:\w+>'          => '<controller>/<action>',
            ),

答案 1 :(得分:0)

应该是:

'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:\w+>' => 'site/profile',

w+将处理仅包含“ w”字母的句柄用户名,您需要使用\w+处理任何单词。

另外[A-Za-z0-9-A-zÀ-ú]+看起来可疑-您应避免在URL中使用非ASCII字母,因此-A-zÀ-ú应该是不必要的。我建议使用此规则:

'<pagename:[\w-]+>/<i:\w+>' => 'site/profile',