12/08/2018, 18:09

[Laravel cho người mới bắt đầu][Chương 2] Xử lý data từ người dùng trong Laravel

Tiếp theo bài viết về Laravel Routing, chúng ta sẽ cùng tìm hiểu về cách Laravel Handling User data (hay nói cách khác là request từ phía client.) Phần này bao gồm: Xử lý request từ phía User Mass assignment trong Eloquent models Xử lý file upload Validation form Request Inject User's ...

Tiếp theo bài viết về Laravel Routing, chúng ta sẽ cùng tìm hiểu về cách Laravel Handling User data (hay nói cách khác là request từ phía client.) Phần này bao gồm:

  • Xử lý request từ phía User
  • Mass assignment trong Eloquent models
  • Xử lý file upload
  • Validation form Request

Inject User's Request

Cách nhanh nhất để có thể lấy được thông tin từ request của user là inject IlluminateHttpRequest object. Thông qua object này chúng ta có thể tương tác với dữ liệu mà user đã input bao gồm các tham số của POST/GET, url ...

Các cách để access Request object

Ngoài việc thực hiện inject Request object vào controller chúng ta có thể access Request object thông qua facade Request hoặc global helper function request(). Tuy nhiên lần này chúng ta sẽ xem cách inject IlluminateHttpRequest như bên dưới

Route::post('form', function (IlluminateHttpRequest $request){
	//Access $request object logic
});

Chúng ta có thể tự hỏi, cái gì truyền vào $request, để trả lời câu hỏi này các bạn có thể xem bài viết liên quan đến Container ở đây.

Tiếp theo chúng ta sẽ bàn về các methods hay được sử dụng để lấy thông tin từ request object

request()->all()

Lấy tất cả nội dung của request và trả về một array tương ứng. hàm $request->all() chỉ lấy các parameters nằm trong body của request, không bao gồm header. Tuy nhiên $request->all() vẫn có thể lấy các parameter được chỉ định trong url. Ví dụ

<form method="POST" action="/form?utm=112233">
	<input type="hidden" value="abc" name="key" />
	<input type="submit">
</form>
Route::post('form', function(IlluminateHttpRequest $request){
	var_dump($request->all());
})

Output

[
	'key' => '123',
	'utm' => 112233,
]

Ta có thể thấy bên trong url /form?utm=112233 có parameter và ta cũng có thể access parameter này (utm) thông qua $request

request->except() và request->only()

Như tên gọi của nó. Chúng ta có thể loại bỏ một vài input hoặc chỉ lấy những input nằm trong whitelist. Việc sử dụng 2 hàm này cùng nhau sẽ cực kì hiệu quả (cũng như an toàn) để lọc các input chúng ta dùng cho Mass Assignments. (Mass assignment là gì thì một tí chúng ta sẽ tìm hiểu ở bên dưới.)

0