ショップはモジュール、製品はコントローラーです。私のリンクには、商品の名前である 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),
),
),