Tóm Tắt
Thực hiện một validation form
- Trước tiên ta cần một trang View có nội dung là một form với vài nội dung nhập dữ liệu.
- Một Controller điều khiển các giá trị validation.
- Một Routing điều hướng trang hiển thị nhập và trang hiện thị dữ liệu lỗi hay thông báo thành công sau khi form được nhấn Submit.
- Tạo nội dung các file trên theo cấu trúc thư mục sau:
myproject
-
app
-
Http
-
Controllers
- PostController.php
-
-
-
resources
-
views
-
admin
- create.blade.php
-
-
-
routes
- web.php
TẠO TRANG VIEW: create.blade.php
(Nếu chưa biết về file View thì xem lại phần Cách tạo file Views).
Đặt file này trong thư mục /resources/views/admin/, với nội dung sau:
<!doctype html> <html> <head> <title>Login Form</title> </head> <body> <form method="post" action="/admin/create"> @csrf <p>Title<br> <input type="text" name="title" value=""></p> <p>Description<br> <textarea rows="5" cols="40" name="description"></textarea></p> <p><button type="submit">Submit</button></p> </form> </body> </html>
method="post"
– phương thức post của form.@csrf
– tạo một chuỗi CSRF ngẫu nhiên, thuộc tính cần được sử dụng thường cho form, nói về nó sau.action="/admin/create"
– khi click button Submit, sẽ post dữ liệu tới/admin/create
, cũng là chính trang View này.
name="title"
– dữ liệu sẽ được nhận thông qua name là title.name="description"
– dữ liệu sẽ được nhận thông qua name là description.type="submit"
– Dữ liệu sẽ gửi thông qua hành động click button.
TẠO MỘT CONTROLLER: PostController.php
Tạo Controller bằng lệnh Artisan:
php artisan make:controller PostController
Controller PostController.php này được đặt trong thư mục /app/Http/Controllers/, với nội dung mặc định sau:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostController extends Controller { // }
Thêm nội dung cho Controller này với function showform() – hiển thị trang xem nội dung form:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostController extends Controller { public function showform() { return view('admin/create'); } }
return view('admin/create');
– hiển thị nội dung Viewcreate.blade.php
tạo bên trên, khi thực hiện điều hướng từ Routing tới Controller
[email protected]
TẠO MỘT ROUTING điều hướng nội dung function showform()
trong Controller vừa tạo
(Nếu chưa biết về cách viết một Routing thì xem lại phần Cách tạo Routing).
Route::get
– nhận yêu cầu từ người dùng, trả về functionshowform
./admin/create
– Khi gõ đường dẫn này lên trình duyệt, thì sẽ tiến hành xử lý ControllerPostController
tại functionshowform
của ControllerPostController.php
- Nếu tạo file với nội dung giống như trên, gõ lên trình duyệt đường dẫn
http://localhost:82/admin/create
sẽ thấy được nội dung trang
/admin/create
vừa tạo:
TẠO MỘT FUNCTION TRONG CONTROLLER ĐIỀU KHIỂN validation: PostController.php
Tạo function validationform bên trong controller PostController.php để tiến hành kiểm tra các giá trị nhập từ form:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostController extends Controller { public function showform() { return view('admin/create'); } public function validationform(Request $request) { echo "<pre>"; print_r($request->all()); echo "</pre>"; $this->validation($request,[ 'title'=>'required|max:50', 'description'=>'required' ]); } }
-
$this->validation()
: Kiểm tra các giá trị form'title'=>'required|max:255'
: Kiểm tra giá trịtitle
nhập từ form, với giá trịrequired
(bắt buộc),max:255
(giới hạn 50 ký tự).'description'=>'required'
: Kiểm tra giá trịdescription
nhập từ form, với giá trịrequired
(bắt buộc)
print_r($request->all())
: in tất cả các giá trị nhập từ form.
TẠO MỘT ROUTING điều hướng nội dung function validationform()
trong Controller vừa tạo
Route::post
– Lấy dữ liệu post từ form trả về functionvalidationform
bên trong Controller./admin/create
– điều hướng trả kết quả về trang/admin/create
.
VIẾT THÔNG BÁO LỖI TẠI VIEW: create.blade.php
Xuất ra thông báo lỗi, nếu không thỏa các điều kiện validation được viết tại controller PostController.php
<!doctype html> <html> <head> <title>Login Form</title> <style type="text/css"> .error-message { color: red; } </style> </head> <body> @if (count($errors) > 0) <div class="error-message"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form method="post" action="/admin/create"> @csrf <p>Title<br> <input type="text" name="title" value=""></p> <p>Description<br> <textarea rows="5" cols="40" name="description"></textarea></p> <p><button type="submit">Submit</button></p> </form> </body> </html>
count($errors) > 0
– Đếm lỗi lớn hơn 0.@foreach ($errors->all() as $error)
– Chạy vòng lặp @foreach để hiển thị các lỗi thỏa điều kiện if bên trên..error-message { color: red; }
– CSS hiển thị text màu đỏ cho text báo lỗi.
- Khi này, nếu nhập title và description không đúng điều kiện trong Controller, thì sẽ báo lỗi, ví dụ ta bỏ trống 2 field này và click button
Submit
:
- Nội dung thông báo lỗi là mặc định có trong Laravel.
- Nếu nhập title và description đúng các điều kiện trong Controller, thì sẽ in ra dữ liệu của title và description vừa nhập:
Array ( [_token] => wYhCZEcm1mlzud8NlFD0ITDSoTShNHLSKAJdppvt [title] => hello [description] => Đây là description )
- Tới đây ta đã biết cách viết một validation form như thế nào, bài tiếp theo sẽ giới thiệu các giá trị validation có thể sử dụng trong Laravel.