LaravelのFormとValidation(フォーム送信と入力チェックの基本) – 9/12

前回は Migration(テーブル作成) を解説しました。

これで

  • データベース
  • モデル(Eloquent)

の準備が整いました。

次に必要になるのが

ユーザー入力の受け取り

です。

Webアプリでは

  • ログイン
  • 会員登録
  • 投稿フォーム

など、ユーザーからの入力が必ず存在します。

その際に重要になるのが

Form と Validation

です。

この記事では次の内容を解説します。

  • フォームの作成
  • データ送信(POST)
  • Requestの取得
  • バリデーション(Validation)
  • エラー表示

Formとは

Formとは

ユーザー入力を送信する仕組み

です。

HTMLでは次のように書きます。

<form method="POST" action="/users">
  <input type="text" name="name">
  <button type="submit">送信</button>
</form>

このフォームを送信すると

/users

にデータが送られます。


LaravelでのForm

LaravelではBladeでフォームを作成します。

<form method="POST" action="/users">
    @csrf

    <input type="text" name="name">
    <button type="submit">送信</button>
</form>

@csrfとは

Laravelでは

CSRF対策

が必要です。

@csrf

を入れないとエラーになります。


ルーティング

フォームの送信先を定義します。

Route::post('/users', [UserController::class, 'store']);

Controllerで受け取る

use Illuminate\Http\Request;

public function store(Request $request)
{
    $name = $request->input('name');

    return $name;
}

Requestとは

Requestは

HTTPリクエスト情報

を扱うクラスです。


データ取得方法

$request->input('name');

または

$request->name;

複数データ

$name = $request->input('name');
$email = $request->input('email');

Validationとは

Validationとは

入力チェック

です。

  • 必須入力
  • 文字数制限
  • メール形式

基本バリデーション

public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
    ]);

    return 'OK';
}

よく使うルール

'name' => 'required|string|max:255',
'email' => 'required|email',
'age' => 'required|integer|min:0',

バリデーションエラー

バリデーションに失敗すると

自動でリダイレクト

されます。


エラー表示(Blade)

@error('name')
    <p>{{ $message }}</p>
@enderror

old()で再表示

<input type="text" name="name" value="{{ old('name') }}">

入力内容を保持できます。


フォーム全体例

<form method="POST" action="/users">
    @csrf

    <input type="text" name="name" value="{{ old('name') }}">

    @error('name')
        <p>{{ $message }}</p>
    @enderror

    <button type="submit">送信</button>
</form>

データ保存

public function store(Request $request)
{
    $request->validate([
        'name' => 'required'
    ]);

    User::create([
        'name' => $request->name
    ]);

    return redirect('/users');
}

Form Request(上級)

バリデーションを分離できます。

php artisan make:request StoreUserRequest

メリット

  • Controllerがスッキリ
  • 再利用可能

実務での使い方

フォーム処理の流れ

Form入力
↓
POST送信
↓
Controller
↓
Validation
↓
DB保存
↓
リダイレクト

よくあるミス


@csrf忘れ

419エラー

name属性ミス

input name="name"

が一致していない


Validation未設定

不正データが入る

まとめ

この記事では FormとValidation を解説しました。

重要なポイント

  • Formでデータ送信
  • Requestで取得
  • Validationでチェック
  • Bladeでエラー表示

これで

ユーザー入力処理

ができるようになります。


次の記事

次回は

LaravelのAPI開発

を解説します。

ここでは

  • JSONレスポンス
  • APIルーティング
  • フロント連携

を説明します。

コメント

タイトルとURLをコピーしました