LaravelリソースコントローラをAjaxで削除する方法


まず、以下の手順に従って、リソースコントローラを作成します。

  1. Laravelのコマンドラインインターフェース(CLI)を使用して、リソースコントローラを生成します。ターミナルで以下のコマンドを実行します。

    php artisan make:controller ResourceController --resource

    これにより、ResourceControllerという名前のリソースコントローラが作成されます。

  2. ResourceController内には、destroyメソッドが用意されています。このメソッドは、リソースを削除するための処理を記述する場所です。以下のようにdestroyメソッドを編集します。

    public function destroy($id)
    {
       // 削除のロジックを記述する
    }

    ここで、$idは削除するリソースのIDです。削除のロジックは、具体的な要件に応じて実装してください。

  3. ルートファイル(routes/web.phpまたはroutes/api.php)に、リソースコントローラのルートを定義します。以下のようにルートを追加します。

    use App\Http\Controllers\ResourceController;
    Route::delete('/resources/{id}', [ResourceController::class, 'destroy']);

    このルートは、DELETEリクエストが/resources/{id}に送信された場合に、ResourceControllerdestroyメソッドを呼び出すように設定します。

以上の手順で、リソースコントローラの削除機能が準備されました。次に、Ajaxを使用して削除リクエストを送信する方法について説明します。

  1. JavaScriptを使用して、Ajaxリクエストを作成します。以下は、jQueryを使用した例です。

    $(document).on('click', '.delete-button', function(e) {
       e.preventDefault();
       var resourceId = $(this).data('id');
    
       $.ajax({
           url: '/resources/' + resourceId,
           type: 'DELETE',
           success: function(response) {
               // 削除が成功した場合の処理
           },
           error: function(xhr) {
               // エラーが発生した場合の処理
           }
       });
    });

    上記の例では、.delete-buttonというクラスを持つ要素がクリックされたときに、Ajaxリクエストが発行されます。リソースのIDは、data-id属性から取得します。

    Ajaxリクエストのurlは、リソースのIDを含んだ削除のエンドポイントに設定します。typeDELETEとなります。

    successコールバック関数は、削除が成功した場合に実行されます。ここで、必要な処理(例: 成功メッセージの表示、リソースの一覧の再読み込みなど)を記述します。

    errorコールバック関数は、エラーが発生した場合に実行されます。ここで、エラーメッセージの表示やエラーハンドリングなどを行います。