2015-01-21 75 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']