2014-12-05 119 views
11

對於我當前(高級)基於yii2的項目,我只需要一個控制器(SiteController)。所以沒有必要在url中顯示它。爲什麼我添加了這個規則到前端配置這就是:

'urlManager' => [ 
    'rules' => array(
     '<alias:product|contact|about>' => 'site/<alias>', 
    ), 

這是工作的罰款和本地主機/產品本地主機/網站/產品

當然,我激活prettyUrl,並將此默認規則的常見的配置:

'rules' => array(
       '<controller:\w+>/<id:\w+>' => '<controller>', 
       '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
      ), 

現在我想訪問這樣的GET參數:本地主機/產品/產品名稱。但我得到的錯誤:

Unable to resolve the request "product"

本地主機/網站/產品/產品名稱正常工作...... 的「產品名稱」應該是$ _GET [「身份證」]。爲了做到這一點,我必須改變什麼?

謝謝!

回答

11

你的規則應該是之前默認的,你需要2個規則,例如:

'rules' => array(
    '<alias:contact|about>' => 'site/<alias>', 
    '<alias:product>/<id:\w+>' => 'site/<alias>', 
    '<controller:\w+>/<id:\w+>' => '<controller>', 
    '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>', 
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
), 
+0

什麼是w +? – 2017-04-04 04:43:22

+1

@YasarArafath **'\ w'匹配任何單詞字符(等於[a-zA-Z0-9 _])** – 2018-01-31 22:24:38

-1

在動作只要定義變種,例如public function actionProduct($id)$id一直是$_GET['id']

+0

我做了,錯誤仍然存​​在。 – ESCOBAR 2014-12-05 13:45:38