2012-03-02 7 views
1

Yiiが「製品」ページのURLを表示する方法を変更しようとしています。Yii URLパラメータの表示をカスタマイズする

localhost/~antonio/project/?r=site/product&id=HXW1410D260D0TB013&language=en 

それともurlFormatと=パス

localhost/~antonio/project/en/product/id/HXW1410D260D0TB013 

私は、URLのは、このように見える必要があります: は今、それはこのことを示して

localhost/~antonio/project/en/product/HXW1410D260D0TB013 

私はYiiのドキュメントに見えたが、私はこれを行う方法を見つけることができません。

ありがとうございました。

答えて

2

あなたのmain.phpルールアレイに次のルールを追加しますので、あなたが

'urlManager' => array(
     'urlFormat' => 'path', 
     'showScriptName' => false, 
     'rules' => array(
       'product/<id:[A-Z0-9]+>'=>'site/product', 
       '<controller:\w+>/<id:\d+>' => '<controller>/view', 
       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ), 
), 

のようなものを持っている必要があり

'product/<id:[A-Z0-9]+>'=>'site/product', 

次のように基本的ルールの形式は次のとおりです。

'product/<id:[A-Z0-9]+>'=>'site/product', 

の用語<>は変数を渡すことを意味しますので、

は、正規表現が一致する場合(大文字と数字のみの場合)、$ _GET ['id']を渡すことを意味します。

したがって、urlがproduct/somethingと一致する場合、site/productにURLを送信し、idという名前の$ _GETパラメータとして "something"を渡します。

希望が明確です。このため

+0

代わりに ' '製品/ '=>' サイト/製品が'、'かもしれませんまた仕事 – Avanche

+0

それは完全に働いた。ありがとう。 –

0

、configフォルダにmain.phpファイルに移動し、パスでURLを有効にするには、以下のコメントを解除形式

'urlManager' => array(
    'urlFormat' => 'path', 
    'rules' => array(
     '<controller:\w+>/<id:\d+>' => '<controller>/view', 
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
     '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
    ), 
), 
+0

これは製品IDが数字であることを期待しているため動作しません。質問からも、彼はすでにURLマネージャを有効にしています。 – Avanche

関連する問題