0

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

我尝试了几种方法。

'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),      
                 ),
         ),
4

1 回答 1

0

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

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

于 2014-06-20T01:44:15.647 回答