投稿テーブルにuser_id
がある場合、そのユーザーがログインしているユーザーと同じかどうかを確認できます。例えば:
routes.phpの
PostsController.php
class PostsController extends Controller{
public function edit($id){
$post = Post::findOrFail($id);
if($post->user_id !== Auth::user()->id){
abort(403);
}
return view('posts.edit', $post);
}
}
EDIT:コメントで要求されたインデックス法を含む更新。
Route:get('posts', [email protected]);
Route:get('post/{id}/edit', [email protected]);
routes.phpの
PostsController.php
class PostsController extends Controller{
public function index(){
$posts = Post::all();
return view('posts.index', $posts);
}
public function edit($id){
$post = Post::findOrFail($id);
if($post->user_id !== Auth::user()->id){
abort(403);
}
return view('posts.edit', $post);
}
}
素晴らしいです。これは編集のために完全に機能します。しかし、私のインデックスビュー(すべての投稿がリストされている)で何かがうまくいかない。私のコードは次のようになります:public function index($ id) { // varを作成し、DBからすべてのブログ投稿を保存します。 $ posts = Post :: findOrFail($ id); if($ posts-> id!== Auth :: user() - > id){ abort(403、 'Zugriff verweigert'); } 戻るビュー( 'posts.index') - > withPosts($ posts); }そして、エラーメッセージは "PostControllerのErrorExceptionです。PHPの行23: App \ Http \ Controllers \ PostController :: index()の引数1がありません。 –
慣例として、リソースのインデックスメソッドはリストに使用され、URLパラメータはありません。 '$ id'パラメータを取得し、Laravelにこのパラメータがないと言います。インデックスメソッドを含む答えを更新します。 –