Formを送信した際に内容が空だとエラー画面に移動してしまう際の対策
バリデーションとは
テストとその後の生産で実行される手順、プロセス、または活動が、すべての段階で望ましいレベルのコンプライアンスを維持していることを証明する文書証拠を確立するプロセス。
大まかに言えば、内容が正しいかチェックすること
$validatedData = $request->validate([ルール],[カスタムメッセージ]);
コントローラー内にバリデーション追加
ルールの追加
第1引数は、各フィールドに対するバリデーションルールの配列。
バリデーションの方法は数種あるが今回は簡単なcontrollerに直接書き込む方法でしてみる。
この方法だとcontrollerへの記述が多くなるので、記述量が増える際は別ファイルに書き込む。
方法は簡単で元々あるvalidate関数を使う方法
controller
public function store(Request $request): RedirectResponse
{
$validated = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// バリデーションに通れば下記の処理を実行する。
return redirect('/posts');
}
エラーメッセージの表示
エラー表示を出したい箇所に@error
文を記述し、その中に表示させたい要素を入れる。
view
@error('title')
<div>{{ $message }}</div>
@enderror
エラーメッセージカスタム
第2引数は、各ルールに対するカスタムエラーメッセージを指定することができる連想配列。
$validated = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
],[
'titel.max' => 'タイトルは255文字以内で入力してください。',
'body' => '入力は必須です',
]);