Yii网址管理员只有网址中的ID

时间:2015-01-21 09:42:27

标签: url yii url-rewriting controller

我在YII中有域名:www.example.com/product-url-1234

如何在urlManager中设置规则以及如何使用controller/action/id

2 个答案:

答案 0 :(得分:1)

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

并假设'index'是将处理请求的'user'控制器的操作名称

然后创建一个像

这样的规则

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

现在,如果您将使用Yii::app()->createUrl('user/index',array('id'=>'product-url-1234'))

然后它会给你想要的结果。

如果您访问此网址,User/Index将处理该请求。

答案 1 :(得分:0)

您正尝试将所有请求转发到根级别的一个控制器。

我假设您的所有请求都是重定向的产品/视图路径

在您的配置中

转到网址部分,

'(.*)'=>'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']

获取网址