2015-01-21 92 views
0

ID我有誼例如域:www.example.com/product-url-1234Yii的網址經理僅在網址

如何在urlManager設定的規則,以及如何使用controller/action/id

+0

This'/ product-url-1234' is dinamic – Zombyii 2015-01-21 09:43:12

回答

1
獲得url

如果您要使用此網址www.example.eu/product-url-1234

並假設'index'是的動作名稱控制器將處理請求

然後,像

'<id:.*?>'=>'user/index'

創建一個規則,現在,如果你會使用Yii::app()->createUrl('user/index',array('id'=>'product-url-1234'))

然後它會給你想要的結果。

如果您訪問此URL,User/Index將處理該請求。

+0

非常感謝:D – Zombyii 2015-01-21 13:47:55

+0

@Ivošš很高興幫助:) – 2015-01-22 04:30:56

0

您正在嘗試着在根級別的所有請求,一個控制器。

我認爲所有的請求都被重定向產品/圖航線

在你的配置去URL部分,

'(.*)'=>'product/view' 
    'urlManager' => array( 
     'urlFormat' => 'path', 
     'showScriptName' => false, 
     'rules' => array( 
      '(.*)' => 'product/view', 
      'post/<id:\d+>/<title:.*?>' => 'post/view', 
      'posts/<tag:.*?>' => 'post/index', 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ), 

這意味着您捕獲你的所有根要求產品控制器查看行動

那裏你可以得到www.example.eu/product-url-1234使用
產品Yii::app()->request->requestUri /視圖

但是這並不是一個很好的方式來捕獲所有傳入的請求到單個控制器,更好的方法如下。

www.example.eu/product/product-url-1234

,那麼你必須改變配置

'product/<product:.*?>'=>'product/view' 
    'urlManager' => array( 
     'urlFormat' => 'path', 
     'showScriptName' => false, 
     'rules' => array( 
      'product/<product:.*?>' => 'product/view', 
      'post/<id:\d+>/<title:.*?>' => 'post/view', 
      'posts/<tag:.*?>' => 'post/index', 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ), 
在視圖行動

,您可以通過$_GET['product']