如何使用yii框架从URL隐藏user_id?

con*_*ile 2 php url-routing yii

我正在使用yii框架并拥有不同的用户帐户.当我想要查看用户4的视图页面时,我必须输入一个类似于www.mydomain.com/user/4我更新的URL www.mydomain.com/user/update/4.

有没有办法让我可以隐藏网址行的用户ID?

我怎样才能设置像www.mydomain.com/user/username和的路线www.mydomain.com/user/update/username?我必须修改路线吗?

如果username包含@符号怎么办?

Dav*_*Xia 5

如果每个用户都有唯一的用户名,您可以通过将此自定义路由规则放入以下内容来描述不显示其用户ID的路​​由config/main:

'urlManager' => array(
    'rules' => array(
        'user/<username:\S+>' => 'users/view',
    )
)
Run Code Online (Sandbox Code Playgroud)

\S+应该接受"@".然后传递该用户名,controllers/UsersController如下所示:

public function actionView($username) {...}
Run Code Online (Sandbox Code Playgroud)

而不是www.mydomain.com/user/update/username我会使用www.mydomain.com/user/<username>/update并将其放在上面的urlManager规则数组中:

'user/<username:\S+>/update' => 'users/update',
Run Code Online (Sandbox Code Playgroud)

这个在UsersController:

public function actionUpdate($username) {...}
Run Code Online (Sandbox Code Playgroud)

您还可以在创建之前为每个用户生成唯一的随机数,并根据该数字进行路由.