【发布时间】:2018-05-18 20:29:59
【问题描述】:
我目前正在使用带有参数name的路由来查询我的应用程序中用户的个人资料。
例如:/members/john将显示约翰的个人资料。
您在这里看到了问题,如果有 2 个约翰,那就是个问题。
我知道我可以做这样的事情 /members/idsince id 是唯一的,但我希望 url 看起来很漂亮,带有用户名而不是随机数。
所以我的问题是,是否有办法使用 id 使其唯一但在 url 中显示名称?
我的路线:
Route::get('/members/{name}', 'UserController@usersProfile');
我的 usersProfile 方法:
/**
* Returns a users profile.
*
* @param string $name
*
* @return \Illuminate\Http\Response
*/
public function usersProfile($name)
{
$profile = $this->userService->getProfile($name);
if ($profile == null) {
return redirect('members')->with('status', 'Whoops, looks like that member does not exist (yet).');
}
return view('members/profile', ['profile' => $profile]);
}
【问题讨论】:
-
为每个用户创建一个唯一的用户名并在路由中使用该值
-
@MKhalidJunaid 感谢您的回复,但我不想使用唯一的用户名。
-
也取决于这个想法......是否有人真的会输入一个 URL......如果你这么认为,那么这个命名的东西很重要,如果不是那么没关系@987654326 @ 现在不可能发生冲突,并且名称仍在 URL 中
-
你也不想使用 id 那么如何确定用户呢?
-
在迁移用户表时确保
name字段是唯一的$table->string('name')->unique();