Laravelでforeach中の削除処理についての質問

2018-05-10

1482

通りがりすの人

関連メモ

現在:公開中

Laravelでforeach中の削除処理についての質問

view上でforeachして表示した複数の投稿文に、削除ボタンをつけたいのですが、それぞれの投稿ボタンに個別の投稿IDを持たせて、それに対してControllerで削除処理をさせたいのですが、どのように書けばよいかがわかりません。

view内のformのボタンそのものにIDを付けて送信することは不可能なのでしょうか・・・ できればURLで~/idのようなことをしたくなく、ボタンを押した瞬間に元の掲示板ページにリダイレクトしたいのです・・・。(無理を言ってすみません!)
 

とのこと

回答

URLで削除する場合はこうします。
コントローラーのdelete処理はできてるものとします。

/post/delete/[削除対象のID]

// ルーティング
// routes/web.php
Route::post('/post/delete/{id}', 'PostController@postDelete');

//view
@foreach ($posts as $key => $post)
     {{-- この部分で動的に削除formを生成している --}}
    <form method="post" action="/post/delete/{{ $post->id }}">
        <input type="submit" name="delete" value="delete">
    </form>
@endforeach

いつもこういうやり方をしてます。
テストしてないのでどこか間違えてたらすみません。

コントローラー

class PostController extends Controller
{
    public function getList()
    {
        //post一覧取得処理
        return view('/list', compact('posts'));
    }
    
    public function postDelete(Request $requests)
    {
        //削除処理
        
        return redirect()->action('PostController@getList');
    }
}

delete処理に入ってから元のページにリダイレクトしたらいいと思うのですが、どうでしょうか?

期待されてるものと違ったらすみません。。

0

投稿者:通りがりすの人 / 投稿日:2018-05-10 15:39:14 / PV数:1482 / コメント数:0

sponsor

コメント 0

コメント投稿