Laravelにおけるフォームで名前付きアクションを設定する方法


  1. ルートの定義: まず、ルートファイル(通常はroutes/web.phproutes/api.php)内で、名前付きアクションに対応するルートを定義します。以下は例です。
Route::post('/form-submit', [FormController::class, 'submit'])->name('form.submit');

上記の例では、/form-submitへのPOSTリクエストに対してFormControllersubmitメソッドを呼び出します。また、このルートにform.submitという名前を付けています。

  1. フォームの作成: 次に、フォームを作成し、アクション属性に名前付きアクションのURLを指定します。Bladeテンプレートを使用する場合、以下のようになります。
<form action="{{ route('form.submit') }}" method="POST">
    <!-- フォームフィールド -->
    @csrf
    <button type="submit">送信</button>
</form>

上記の例では、route('form.submit')を使用して名前付きアクションのURLを取得し、action属性に指定しています。@csrfディレクティブはセキュリティ対策のためにCSRFトークンを追加するものです。

  1. コントローラーの処理: 最後に、名前付きアクションに対応するコントローラーメソッドを定義します。FormControllerクラス内にsubmitメソッドを作成し、リクエストを処理します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FormController extends Controller
{
    public function submit(Request $request)
    {
        // フォームのデータを処理するロジックを記述する
        // ...
        return redirect()->back();
    }
}

上記の例では、submitメソッド内でフォームのデータを処理するロジックを記述します。処理が完了したら、リダイレクトやレスポンスを返すことができます。

これで、Laravelにおいてフォームで名前付きアクションを設定する方法がわかりました。名前付きアクションを使用することで、ルーティングやコントローラーの管理が簡単になります。