- ルートの定義:
まず、ルートファイル(通常は
routes/web.php
やroutes/api.php
)内で、名前付きアクションに対応するルートを定義します。以下は例です。
Route::post('/form-submit', [FormController::class, 'submit'])->name('form.submit');
上記の例では、/form-submit
へのPOSTリクエストに対してFormController
のsubmit
メソッドを呼び出します。また、このルートにform.submit
という名前を付けています。
- フォームの作成: 次に、フォームを作成し、アクション属性に名前付きアクションのURLを指定します。Bladeテンプレートを使用する場合、以下のようになります。
<form action="{{ route('form.submit') }}" method="POST">
<!-- フォームフィールド -->
@csrf
<button type="submit">送信</button>
</form>
上記の例では、route('form.submit')
を使用して名前付きアクションのURLを取得し、action
属性に指定しています。@csrf
ディレクティブはセキュリティ対策のためにCSRFトークンを追加するものです。
- コントローラーの処理:
最後に、名前付きアクションに対応するコントローラーメソッドを定義します。
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においてフォームで名前付きアクションを設定する方法がわかりました。名前付きアクションを使用することで、ルーティングやコントローラーの管理が簡単になります。