yii网址管理员

时间:2011-11-28 21:47:31

标签: php yii

我正在尝试匹配此网址:

http://www.example.org/en/site/page/id/1

遵守这些规则:

'rules'=>array(
      '/'=>'site/index',      
      '<lang>/<controller:\w+>'=>'<controller>/index', 
      '<lang>/<controller:\w+>/<action:\w+>'=>'<controller>/<action>',      
      '<lang>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>/<id>',   
      '<lang>'=>'/',   
),

我认为它有效但不起作用。

3 个答案:

答案 0 :(得分:3)

您的网址包含“id”字符串/文字http://www.example.org/en/site/page/id/1,这不是必需的......

使用

尝试网址
http://www.example.org/en/site/page/1

或者再添加一条路线

'<language:\w+>/<controller:\w+>/<action:\w+>/id/<id:\d+>' =>'<controller>/<action>/<id>',

它应该双向工作..

答案 1 :(得分:0)

看起来语言参数路由的格式不正确。试试这个:

'rules' => array(
  '/'                                                     =>'site/index',      
  '<language:\w+>/<controller:\w+>'                       =>'<controller>/index', 
  '<language:\w+>/<controller:\w+>/<action:\w+>'          =>'<controller>/<action>',      
  '<language:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' =>'<controller>/<action>/<id>',   
  '<language:\w+>'                                        =>'/',   
),

答案 2 :(得分:0)

尝试将更具体的规则移到顶部。

'rules'=>array(
      '<lang:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>/<id>',                  
      '<lang:\w+>/<controller:\w+>/<action:\w+>'=>'<controller>/<action>',      
      '<lang:\w+>/<controller:\w+>'=>'<controller>/index', 
      '<lang:\w+>'=>'/',   
      '/'=>'site/index',      
),

[编辑]修复了lang regex *学分给Moz Morris。