在我的应用程序中,我有一个用户配置文件的概念。显示的信息根据用户是查看自己的个人资料还是其他用户的个人资料而有所不同。以下是UsersController@show
的简化视图:
public function show($id)
{
$user = User::findOrFail($id);
$currentUser = Auth::user();
return view ('users.show', compact('user', 'currentUser'));
}
在我看来,我最终不得不编写如下代码:
@if ($currentUser === $user->id)
<section class="container search-form visible-nav">
<div class="row">
<div class="col-xs-12">
@include ('partials._search')
</div>
</div>
</section>
@endif
这似乎是一种笨拙的实现,特别是对于像Laravel这样的语言。有没有更简洁的方法在我的观点中实现相同的结果?
答案 0 :(得分:3)
不是真的。您需要在控制器或视图中检查当前用户是否是查看过的用户。
您可以稍微简化一下代码:
public function show($id)
{
$user = User::findOrFail($id);
return view ('users.show', compact('user'));
}
@if (Auth::id() === $user->id)
<section class="container search-form visible-nav">
<div class="row">
<div class="col-xs-12">
@include ('partials._search')
</div>
</div>
</section>
@endif
还有一些其他选项,例如返回不同的刀片模板,具体取决于当前用户是否与查看的用户相同,但如果唯一的区别是@ifs,我会将其保留在一个模板中。