urlmanager没有路由到欲望页面

时间:2014-06-19 22:14:04

标签: yii yii-url-manager

商店是模块,产品是控制器。我的链接有一个名为item的附加参数,它是产品的名称。当我点击链接时,它要么永远不会生成所需的网址,要么页面不会显示。

我尝试了几种方法。

'shop/product/view/<id:\d+>/<item:\w+>'=>'<item>',这给了我shop / product / view / 6?item = name

'<module:(shop)>/<controller:(product)>/<action:(view)>/<id:\d+>/<item:\w+>'=>'<item:\w+>'这给了我与上面相同的内容

shop/product/view/id/<id:\d+>/item/<item:\w+>'>=>'shop/<item:\w+>',这给了我错误页面Unable to resolve the request "shop/name"

我试图编写自己的扩展curlmanager但失败了。它给了我相同的url.shop/product/view/6?item=name

class UrlManager extends CUrlManager
{
    public $connectionID = 'db';

    public function createUrl($manager,$route,$params,$ampersand)
    {
     if ($route == 'shop/product/view'){
            $product = Product::model()->findByPk($params['id']);
            $url=$product->product_name;
            return Yii::app()->createUrl(trim($url,'+'),$params,$ampersand);
    }

更新:

'urlManager'=>array(
                'urlFormat'=>'path',
                'showScriptName'=>false,
                'rules'=>array(
                            'shop/product/view/id/<id:\d+>/item/<item:\w+>'=>'<item>',              
//'category'=>array('site/category', 'caseSensitive'=>false),      

//'shop'=>array('shop/product/view','caseSensitive'=>false),
//'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<module>/<controller>/<action>',
//'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>',
// '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
// 'reset/<id:\d+>/<item:\w+>'=>array('site/reset/id', 'caseSensitive'=>false),      
                 ),
         ),

1 个答案:

答案 0 :(得分:0)

shop/<item:\w+>看起来与控制器/操作完全相同,所以我相信它会被其他一些规则覆盖。你可以发布所有规则来查看它们吗?

还尝试将此规则放在rules数组的开头,这应该使它优先于其他规则。