Yii路由和创建带有多个参数的url


Yii routes and creation of URLs with multiple parameters

我想获得URL如下:

http://domain.com/post/1/some-titles-here

但是我得到:

http://domain.com/post/1?title=some-titles-here

我正在使用这个配置:

'urlFormat' => 'path',
...
//'post/<id:'d+>/<title>' => 'post/view/', 
'post/<id:'d+>/<title:'w+>' => 'post/view/',
'post/<id:'d+>' => 'post/view/',
...

然后得到我正在执行的URL:

Yii::app()->createAbsoluteUrl('post/view', array('id' => $this->id,'title' => $this->title));

我在这里遵循第三条规则:http://www.yiiframework.com/doc/guide/1.1/en/topics.url using-named-parameters

你用来匹配标题的正则表达式是不正确的:<title:'w+>将只匹配单个单词,但你的标题也有连字符。

Tuan是正确的;它符合下一条规则。这是因为URL管理器在规则中查找,直到找到一个匹配的。

使用此规则代替:

'post/<id:'d+>/<title:([A-Za-z0-9-]+)>' => 'post/view/',

将用字母、数字和连字符匹配标题。

这是一个为我工作的代码:

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName' => false,
    'rules'=>array(
         '' => 'site/index',
         'article/<id:'d+>/<alias:[-'w]+>' => 'article/view',
         'article/cat/<id:'d+>-<alias:[-'w]+>' => 'category/view',

结果网址:

  • http://wowjp.black.dragon/article/2/test-zagolovka
  • http://wowjp.black.dragon/article/cat/3 - 345435