Yii urlmanager没有';t路由到desire页面

Yii urlmanager没有';t路由到desire页面,yii,yii-url-manager,Yii,Yii Url Manager,车间是模块,产品是控制器。我的链接还有一个名为item的附加参数,它是产品的名称。当我点击链接时,它要么永远不会生成所需的url,要么页面就是不显示 我试过几种方法 'shop/product/view/'=>'',这给了我shop/product/view/6?item=name class UrlManager extends CUrlManager { public $connectionID = 'db'; public function createUrl($mana

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

我试过几种方法

'shop/product/view/'=>'',这给了我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);
    }
'//'=>'
这给了我与上面相同的结果

shop/product/view/id//item/'>=>'shop/'
,这给了我错误页面
无法解析请求“shop/name”

我试图编写自己的管理器,但失败了。它给了我相同的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),      
                 ),
         ),
'urlManager'=>数组(
“urlFormat'=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
'shop/product/view/id//item/'=>',
//'category'=>数组('site/category','caseSensitive'=>false),
//'shop'=>数组('shop/product/view','caseSensitive'=>false),
//'///'=>'//',
//'//'=>'',
// '/'=>'/',
//“reset/”=>array('site/reset/id','caseSensitive'=>false),
),
),
shop/
看起来与控制器/操作完全相同,因此我相信它会被其他一些规则覆盖。你能发布所有的规则来查看它们吗


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

是的,我已将其放在顶部,但问题仍然存在。请查看更新。我的另一个想法是,其他页面如何编写链接重要吗?因此,这个链接被写成
yii:app()->createUrl('product/view',array('id'=>1,'name'=>$model->name')这会影响它的重定向方式吗?我想不出其他原因。我相信应该是yii:app()->createUrl('shop/product/view',array('id'=>1,'name'=>$model->name');我相信你的规则也是错误的。为什么要使用类UrlManager扩展curlmanager必须使用类似“product/”=>“shop/product/view”的规则,当您声明路线时,您应该使用Yii:app()->createUrl('shop/product/view',array('id'=>1,'name'=>$model->name');代码商店/产品/视图/id//item/的某些调试与yii:app()->createUrl('shop/product/view',array('id'=>1,'name'=>$model->name'))不匹配;,您在一个位置使用项,在另一个位置使用名称