【Laravel】バリデーション処理を追加する

前回までの状況はこちら。

最新ソースはこちら。

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

クリックで応援よろしくお願いします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください