前回は 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ルーティング
- フロント連携
を説明します。


コメント