大企業営業から未経験ITエンジニアを目指すブログ

アラサー大企業営業から未経験ITエンジニアを目指すブログ。日々学んだことを忘備録的に記します。

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() !!}