Laravel – Validation

Validation là quá trình kiểm tra tính hợp lệ của dữ liệu nhập vào. Trong laravel, quá trình này được cung cấp thông qua ValidatesRequests trong App\Http\Controllers\Controller.

Các quy tắc có sẵn trong laravel.

(https://laravel.com/docs/5.6/validation#available-validation-rules)

Accepted Digits Between Nullable
Active URL Dimensions (Image Files) Numeric
After (Date) Distinct Present
After Or Equal (Date) E-Mail Regular Expression
Alpha Exists (Database) Required
Alpha Dash File Required If
Alpha Numeric Filled Required Unless
Array Image (File) Required With
Bail In Required With All
Before (Date) In Array Required Without
Before Or Equal (Date) Integer Required Without All
Between IP Address Same
Boolean JSON Size
Confirmed Max String
Date MIME Types Timezone
Date Equals MIME Type By File Extension Unique (Database)
Date Format Min URL
Different Not In
Digits Not Regex

Laravel luôn kiểm tra lỗi và tự động bind chúng vào view. Luôn có 1 biến $errors trong tất cả views. Bạn có thể sử dụng để thông báo lỗi đến người dùng. Ví dụ:

@if (count($errors) > 0)
   <div class = "alert alert-danger">
      <ul>
         @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
         @endforeach
      </ul>
   </div>
@endif

Ví dụ

Step 1 : Tạo controller ValidationController bằng lện command bên dưới:

php artisan make:controller ValidationController

Step 2 : Thêm code sau vào controller ValidationController vừa tạo.

app/Http/Controllers/ValidationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ValidationController extends Controller
{
    public function showform(){
        return view('login');
    }
    public function validateform(Request $request){
        print_r($request->all());
        $this->validate($request,[
            'username'=>'required|max:8',
            'password'=>'required'
        ]);
    }
}

Step 3 : Tạo view login.blade.php với code như bên dưới:

resources/views/login.blade.php

<html>
   
   <head>
      <title>Login Form</title>
   </head>

   <body>
      
      @if (count($errors) > 0)
         <div class = "alert alert-danger">
            <ul>
               @foreach ($errors->all() as $error)
                  <li>{{ $error }}</li>
               @endforeach
            </ul>
         </div>
      @endif
      
      {{ Form::open(array('url'=>'/validation')) }}
      
      <table border = '1'>
         <tr>
            <td align = 'center' colspan = '2'>Login</td>
         </tr>
         
         <tr>
            <td>Username</td>
            <td>{{ Form::text('username') }}</td>
         </tr>
         
         <tr>
            <td>Password</td>
            <td>{{ Form::password('password') }}</td>
         </tr>
         
         <tr>
            <td align = 'center' colspan = '2'>
               {{ Form::submit('Login') }}</td>
         </tr>
      </table>
      
      {{ Form::close() }}
   
   </body>
</html>

Step 4 : Thêm code sau vào routes/web.php

Route::get('/validation','ValidationController@showform');
Route::post('/validation','ValidationController@validateform');

Step 5 : Vào http://localhost:8000/validation nhập các dữ liệu test.

Step 6 : Nhấn login.