将URL添加到URL管理器

时间:2014-03-08 23:38:03

标签: yii yii-url-manager

我一直很难理解Yii的URL Manager。我有一个转到此createurl('site/category',array('id'=$id))的网址,但它不起作用:

  

站点/类别/ 1?猫=附件

当我到这个URL时,它可以工作:

  

/站点/类别/ ID / 1?猫=附件

如果我应该自定义编写它,它是否属于组件?如果是这样,下一步会是什么?不幸的是,我只是不理解这一点。

'urlManager'=>array(
  'urlFormat'=>'path',
  'showScriptName'=>false,
  'appendParams' => true,
  'rules'=>array(
    'site/category/id/<id:\d+>/<item:\w+>'=>'<controller>/<action>',
    '<module:\w+>/<controller:\w+>/<action:\w+>'=>'<module>/<controller>/<action>',
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  ),

2 个答案:

答案 0 :(得分:0)

这个

createurl('site/category',array('id'=$id))

应该是:

createurl('site/category',array('id' => $id))

您想要生成什么网址?

您的规则会生成

site / category / id / {number goes here} / itemInLetters

为了你的工作,你需要使用item参数传递它:

createurl('site/category',array('id' => $id, 'item' => 'MyItem'))

答案 1 :(得分:0)

只需改变你的规则:

'rules'=>array(
    'site/category/<id:\d+>/<item:\w+>'=>'<controller>/<action>', // removed id
    .
    .
    .
  ),