①エラーがあると、前のページにリダイレクトさせたい場合
コントローラー側の基本形
$request->validate([
'id' => 'required|alpha_num',
]);
エラーがあると、前のページにリダイレクトする。その際、GETでリダイレクトされるため、前ページは、GETでアクセス可にしておく。
View側の基本形
<div class="{{ $errors->has('id') ? ' has-error' : '' }}">
<input type="text" name="id" value="{{old('id', 初期値)}}">
@if ($errors->has('bank_name'))
<span class="help-block">
<strong>{{ $errors->first('bank_name') }}</strong>
</span>
@endif
</div>
フォームを囲むDIVのclassに、
{{ $errors->has('id') ? ' has-error' : '' }}
を書いておくことで、エラーがあるとフォームに色をつけることができる。
フォームのvalueは、
{{old('id', 初期値)}}
としておくことで、エラーで戻ってきた際、元の入力値を受けることができる。
エラーメッセージ
laravel/resources/lang/ja/validation.phpに記載する
・属性を変える場合
'attributes'の中に属性のみ追記していく。
'attributes' => [
'id' => '会員ID',
],
・メッセージも変える場合
'custom'の中に追記していく。
'custom' => [
'bank_name' => [
'required' => '銀行名は必須です!',
],
],
$request->validate([
]);
ajaxの場合、上記を書いておけば、エラーがあるとリダイレクトせず、バリデーションエラーを全部含んだJSONレスポンスが返される。
そして、ajaxの
$.ajax({
type: "POST",
dataType: "json",
data: {},
url: "{{ asset('xxxx') }}",
}).done(function(data){
}).fail(function(res){※ここの部分
});
fail()にレスポンスが返ってくる(422HTTPステータスで)。
確認画面から「戻る」ボタンを押した際、入力値を保存するには・・・
confirmのコントローラーに以下を記載
「戻る」ボタンを押すと、
<form method="GET" action="{{ asset('元のURL') }}">
が実行されるようにしておく。
そうすると、元のページに戻った際、入力値が
{{old('id', 初期値)}}
で取得できている。
②エラーがあると、違うページにリダイレクトさせたい場合
$validator = Validator::make($request->all(), [
'id' => 'required|alpha_num',
]);
if ($validator->fails()) {
return redirect('/error');
}