【发布时间】:2015-01-28 20:27:29
【问题描述】:
在我的 Yii 应用程序中,我在 Yii 的 urlManager 中定义了如下规则:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'izletiste/<grad:\.*?>/<naziv:.*?>/<id:d+>'=>'izletiste/show',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
现在,当我想创建一个链接时,我使用以下结构:
<?php echo CHtml::link(CHtml::encode($izletiste->nazivIzletista),array("izletiste/show","grad"=>"Paris","naziv"=>"Some text", "id"=>$id)); ?>
我得到的网址如下:
http://mywebsite.com/izletiste/Paris/Some+text/21
但是当我点击链接时,我得到以下错误:
错误 404
系统找不到请求的动作“Paris”。
我的问题是为什么会发生这种情况,为什么 Yii 不承认应该调用 izletiste/show 动作而不是 izletiste/paris,以及如何解决这个问题?
【问题讨论】:
-
“grad”=>“paris”是什么意思,根本不管是巴黎还是巴黎!
-
我刚刚意识到,
\.*?和d+的正则表达式是错误的。它应该分别是<grad:\w+>和<id:\d+>。你想通过使用<grad:\.*?>来达到什么目的? -
是的,这是第二个错误。感谢您指出这一点!
标签: yii yii-components yii-url-manager