前回までの状況はこちら。
最新ソースはこちら。
https://github.com/takishita2nd/hotel-mng
バリデーション処理とは、フォームで入力した値が、正しいかどうかを確認する処理です。
現在は入力された値がそのままデータベースに入るようになってしまっているので、パラメータチェック処理を入れて、エラーを返せるようにします。
今回は実装量が少ない方法で行きます。
以下のコマンドを入力。
$ php artisan make:request ManagementRequest
そうすると、App/Http/Request/ManagementRequest.phpが作成されます。
その内容を修正します。
class ManagementRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'name' => 'required|string', 'address' => 'required|string', 'phone' => 'required|digits:11', 'num' => 'required|numeric|digits_between:1,2', 'days' => 'required|numeric|digits_between:1,4', 'start_day' => 'required|date', ]; } }
authorize()の戻り値はtrueに変えます。
falseのままだとすべて認証エラーとなります。
rules()に各パラメータの確認内容を記入します。
こちらのサイトが参考になります。
https://qiita.com/fagai/items/9904409d3703ef6f79a2
あとは、コントローラーを変更します。
use App\Http\Requests\ManagementRequest; /** * 登録処理 */ public function store(ManagementRequest $request) /** * 更新処理 */ public function update(ManagementRequest $request)
確認を行うフォームのリスエスト処理の引数の型をManagementRequestに変更します。
これで、App/Http/Request/ManagementRequest.phpの内容が適用されます。
あとは、bladeにエラーを表示する領域を追加すればOK。
@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
クリックで応援よろしくお願いします。