所以我遵循L5基础知识,尝试改进事情,但它变得有点复杂,特别是你可以用许多不同的方式做同样的事情。我一直在忘记哪个是哪个。
我正在尝试检查用户试图编辑的文章是否属于他,如果没有,我会用信息重定向他。我将其应用于edit()
ArticlesController
方法
我能够获得已登录用户的id
,但我无法获得user_id
中的articles
,因此我可以对其进行比较。
这是我到目前为止所做的,因为你可以看到它的评论,因为它不是我想要的结果,这是我最接近它的任何东西。
我还应该在控制器或视图上实现这个条件吗?为什么?
public function edit(Article $article) {
$user = Auth::id();
//$articleUserId = $article->user()->getResults();
dd($user);
if($user) {
$tags = Tag::lists('name', 'id');
//$article = Article::findOrFail($id);
return view('blog/edit')->with('article', $article)
->with('tags', $tags);
} else {
return 'you are not logged in';
}
}
答案 0 :(得分:1)
public function edit(Article $article) {
if ( ! auth()->check()) {
return 'you are not logged in';
}
if ($article->user_id != auth()->id()) {
return 'This is not your article';
}
$tags = Tag::lists('name', 'id');
return view('blog.edit')->with(compact('article', 'tags'));
}
我看到有人在owns
模型中添加User
方法:
public function owns(Model $model)
{
return object_get($model, 'user_id') == $this->id;
}
然后在您看来,您可以查看它:
@if (auth()->user()->owns($article))
// show whatever...
@endif
答案 1 :(得分:1)
我想在你的问题中发表评论,但我没有足够的声誉,所以我会发布另一个答案..
感谢。它完成了这项工作。但是现在的问题是,我该如何隐藏 "编辑"如果文章的用户ID不相同,则链接在视图上 作为登录用户的用户ID? - Halnex 8小时前
基于Joseph Silber
在你看来..
@foreach($article as $value)
@if($article->user_id == Auth::id())
//SHOW EDIT BUTTON
@endif
@endforeach