【发布时间】:2017-10-09 11:50:38
【问题描述】:
我是 Laravel 世界的新手(使用 5.0),我正在学习如何路由。 我有这条路线
Route::get('users/{id}', 'UserController@showProfile');
还有UserController
public function showProfile($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
一切正常,生成的 url 例如本地主机:8000/users/1。
可以屏蔽这条路线,而是使用类似 localhost:8000/users/profile 的东西,在后台进行查询? 谢谢大家
【问题讨论】:
-
您应该为 a 用户和 the 用户使用单独的路由。我的意思是,路由
/user/profile应该处理已登录的用户,而/user/{id}应该只处理由该 ID 指定的单个用户。 -
谢谢你的回复,我明白你的意思了。我的问题是,即使对于已登录的用户,我也不希望他能够看到他的 id,我的意思是例如 users/2
-
基本上该数字是用户的标识符..如果您希望使用配置文件来掩盖它,那么您必须将其作为查询字符串传递,但我想您不希望这样,因此您可以提交帖子请求用户/配置文件并指定所需的参数并在控制器中返回记录
-
@Daitarn 对,这很好;访问
/user/profile的登录用户将看到他的信息,而不是他的ID。如果您从不希望用户看到任何用户 ID,那么您将不得不在您的路线中使用不同的属性,例如email或slug或其他东西,只要它是独一无二。 -
另外,如果您的登录用户的 ID 为 1,并且他们尝试访问
/user/1,您只需将他们重定向到/user/profile.:if($id == Auth::user()->id) { return redirect("/user/profile"); }
标签: php laravel-5 routing controllers laravel-eloquent