Yii url 管理员唯一 ID url

Yii url manager only ID in url

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

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

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

我假设你所有的请求都被重定向了product/view路由

在您的配置中转到 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 在 product/view

但这不是将所有传入请求捕获到单个控制器的好方法,更好的方法如下。

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']

获得 url

如果你想用这个urlwww.example.eu/product-url-1234

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

然后创建一个规则,例如

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

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

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

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