如何在yii中为模块创建漂亮的URL

时间:2015-06-16 11:06:21

标签: php yii yii-url-manager

我经常搜索并尝试了很多,但没有运气。我已经提到了LINK。但它没有解决我的问题。我在yii(yii 2)中安装了一个用户模块。我有像

这样的用户个人资料网址

http://192.168.1.31/Eb/user/profile?uguid=ac0c4558-77fc-4896-9b30-f77afe4d81cd

但我希望这样喜欢

http://192.168.1.31/Eb/user/profile/ac0c4558-77fc-4896-9b30-f77afe4d81cd

我的意思是没有guid查询字符串参数。 我正在尝试像这样的网址管理器

'urlManager'=>array(
                'urlFormat'=>'path',
                'showScriptName'=>false,
                'rules'=>array(
           '<controller:\w+>/<action:\w+>/<guid:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),

怎么可能?

2 个答案:

答案 0 :(得分:0)

rules参数(属性)的Yii UrlManager键必须是正则表达式。 如果我理解为你的网址有一个结构CONTROLLER / ACTION(在我的情况下Eb是子文件夹),那么你的规则必须是:

'urlManager'=>array(
   'urlFormat'=>'path',
   'showScriptName'=>false,
   'rules'=>array(
        '<controller:\w+>/<action:\w+>/<uguid:\w+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
)

请注意,您的uguid参数不是数字,因此您必须使用w+代替d+

因此,您可以使用createUrl创建网址:

Yii::app()->createUrl('user/profile', array('uguid' => 'USER_ID'))

结果必须提供你想要的。

答案 1 :(得分:0)

您也可以使用

访问您当前的网址
http://192.168.1.31/Eb/user/profile/uguid/ac0c4558-77fc-4896-9b30-f77afe4d81cd

您可以通过在urlmanager规则中添加以下行来删除您的控制器名称:

'/Eb/user/profile/<id:([0-9a-zA-Z_\-]+)' => 'Eb/user/profile/uguid/<id>'

应该这样做:)