Laravelでのバリデーション処理メモ その1
バリデーションを行う
フォームのバリデーション処理です。
routes/web.php
Route::get('hoge', 'HogeController@index'); Route::post('hoge', 'HogeController@post');
HogeController.php
class HogeController extends Controller { public function index(Request $request) { return view('hoge.index',['msg'=>'入力']); } public function post(Request $request) { $validate_rule = [ 'name' => 'required', 'mail' => 'email', 'age' => 'numeric|between:0,100', ]; $this->validate($request,$validate_rule); return view('hoge.index',['msg'=>'入力成功!']); } }
hoge/index.babel.php
<table> <p>{{$msg}}</p> <form action="/hello" method="post"> {{csrf_field()}} <tr> <th>name</th> <td><input type="text" name="name"></td> </tr> <tr> <th>mail</th> <td><input type="text" name="mail"></td> </tr> <tr> <th>age</th> <td><input type="text" name="age"></td> </tr> <tr> <th></th> <td><input type="submit" value="send"> </td> </tr> </form> </table>
表示
バリデーション処理について
バリデーションルールは以下のように設定します。
//`項目名` => 'ルール' 'name' => 'required'
複数設定する場合は|
を利用します。
// 値が数値 且つ 0 ~ 100の間
'age' => 'numeric|between:0,100'
バリデーションの実行は以下です。
$this->validate($request,$validate_rule);
input formの値を保持
バリデーションエラーになった場合に、入力したinputフィールドが空にってしまいます。 入力した値を保持する為には、以下のようにします。
<input type="text" name="name" value="{{old('name')}}">
バリデーションエラーを表示する
入力値に対してエラーを表示するには以下のようにします。
hoge/index.babel.php
<table> <p>{{$msg}}</p> @foreach($errors->all() as $error) <p> - {{$error}}</p> @endforeach <form action="/hello" method="post"> ... </table>
$erorrsの中身
$erorrsは以下のような連想配列になっています。
{ "name":["The name field is required."], "mail":["The mail must be a valid email address."], "age":["The age must be a number."] }
その為特定のエラーが発生しているかを判定して表示することができます。
@if($errors->has('name')) $errors->get('name'); @endif
バリデーションのルール
ルール | 内容 |
---|---|
accept | チェックボックスに使います。チェックされている、されていないの判定で利用します |
active_url | 有効なアドレスかチェックします |
url | urlの形式になっているかチェックします |
after: 日付 | 指定した日時より後かをチェックします |
after_or_equal:日時 | 指定した日時より後、もしくは同じであるかをチェックします |
before: 日付 | 指定した日時より前かをチェックします |
before_or_equal:日時 | 指定した日時より前、もしくは同じであるかをチェックします |
alpha | 入力されたテキストが全てアルファベットかをチェックします |
alpha-dash | アルファベット、ハイフン、アンダースコアかをチェックします |
alpha-num | アルファベット、数値かをチェックします |
array | 配列かをチェックします |
between:min,max | 数値の値で、指定の範囲の値かをチェックします |
boolean | 真偽値かをチェックします |
date | 日時のデータかをチェックします |
date_format:フォーマット | 指定の日時のフォーマットと一致するかをチェックします |
different:フィールド | 指定したフィールドと異なる値かをチェックします |
same:フィールド | 指定したフィールドと同じ値かをチェックします |
digits:桁数 | 指定した桁数と値の桁数が同じかチェックします |
digits_between:min,max | 指定した桁数と範囲に値の桁数が入るかをチェックします |
distinc | 配列内に同じ項目がないかチェックします |
メールアドレスの形式かをチェックします |
などなど。。。。 まだまだ沢山あるので以下を参照してください。