1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelのバリデーションの基本【個人的なお勉強アウトプット】

Posted at

参考図書

バリデーションルールの設定

ValidateRequestsというコントローラクラスにあるメソッドを利用する。

app/Http/Controllers/HelloController.php
public function post(Request $request){
$validate_rule = [
            'name' => 'required',
            'mail' => 'email',
            'age' => 'numeric|between:0,150',
        ];
$this->validate($request, $validate_rule);
}

validateアクションメソッドは配列の形で、項目名、検証ルールをセットする。
検証ルールが複数ある場合は|でつなぐ。

ルートの設定

routes/web.php
Route::post('hello', 'App\Http\Controllers\HelloController@post');

ビューでエラーメッセージの表示

resources/views/hello/index.blade.php
@section('content')
    <p>{{$msg}}</p>
    @if(count($errors) > 0)
    <p>入力に問題があります。再入力してください。</p>
    @endif
    <form action="/hello" method="post">
        <table>
            @csrf
            //hasはエラーが発生しているかをチェックするメソッド
            @if($errors->has('name'))
                        
                        //firstというメソッドは指定した項目の最初のエラーメッセージを取得するもの
            <tr><th>ERROR</th><td>{{$errors->first('name')}}</td></tr>
            @endif
                        //oldメソッドで引数に指定した入力項目の前回送信した値を返す
            <tr><th>name: </th><td><input type="text" name="name" value="{{old('name')}}"></td></tr>
            @if($errors->has('mail'))
            <tr><th>ERROR</th><td>{{$errors->first('mail')}}</td></tr>
            @endif
            <tr><th>mail: </th><td><input type="text" name="mail" value="{{old('mail')}}"></td></tr>
            @if($errors->has('age'))
            <tr><th>ERROR</th><td>{{$errors->first('age')}}</td></tr>
            @endif
            <tr><th>age: </th><td><input type="text" name="age" value="{{old('age')}}"></td></tr>
            <tr><th></th><td><input type="submit" value="send"></td></tr>
        </table>
    </form>
@endsection

$errorsはバリデーションで発生したエラーメッセージをまとめて管理するオブジェクト。バリデーション機能によって勝手に組み込まれる。

エラーメッセージを取得するメソッド

メソッド 内容
all すべてのエラーメッセージを配列で取得
first 指定した項目の最初のエラーメッセージを文字列で取得
get 指定した項目の最初のエラーメッセージすべてを配列で取得

getの使い方はfirstと同じで$変数 = $errors->get('項目名');

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?