Laravel 5.5 CRUD削除処理
①ルータ
一括生成により、下記を作成。
Route::group(['middleware' => 'auth'], function () {
Route::resource('posts', 'PostsController', ['except' => ['index']]);
});
Method | URI | Name | Action
| Middleware
| DELETE | posts/{post} | posts.destroy | App\Http\Controllers\PostsController@destroy | web,auth
②コントローラ
スカフォールドにて作成。
use App\Post;
public function destroy($id)
{
$post = Post::find($id);
if (\Auth::id() === $post->user_id) {
$post->delete();
}
return redirect('/');
}
③ビュー
Laravel Colleciveを使わない場合はとてもややこしい。Laravel Collecive使った方がメジャーなのか??
@if (Auth::id() == $post->user_id)
<form method="POST" action="{{ route('posts.destroy', ['id' => $post->id ]) }}" accept-charset="UTF-8">
{{ csrf_field() }}
<input name="_method" type="hidden" value="DELETE">
<input class="btn btn-danger btn-sm" type="submit" value="Delete">
</form>
@endif
//HTMLのフォームのメソッドはGETとPOSTしかない。
//ほとんどのブラウザはPUT, PATCH, DELETEメソッドは処理できない
http://recipes.laravel.jp/recipe/224
※Collectiveだったらこれで済む
{!! Form::open(['route' => ['posts.destroy', $post->id], 'method' => 'delete']) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger btn-sm']) !!}
{!! Form::close() !!}