trieu.dev.da
Nguyễn Thanh Triều
Method prepareForValidation() trong Illuminate\Foundation\Http\FormRequest giúp bạn tiền xử lý yêu cầu (request) trước khi xác thực (validate).
1. Đặt vấn đề
Giả sử trong lúc tạo 1 api lấy danh sách bài viết (post) bạn muốn để gán giá trị số bài viết trên trang mặc định là 20 (per_page = 20). Cơ bản, thông thường chúng ta sẽ gán ở Controller hoặc trong Model hoặc cả hai.
Model
Có 1 cách khác là các bạn có thể tiền xử lý trước ngay trong $request.
2. Method prepareForValidation()
Bạn có thể ép kiểu luôn cho biến per_page để chắc chắn nó là 1 số nguyên
3. Áp dụng vào các bài toán thực tế
Trong các dự án thực tế mình thường hay dùng method này để:
1. Đặt vấn đề
Giả sử trong lúc tạo 1 api lấy danh sách bài viết (post) bạn muốn để gán giá trị số bài viết trên trang mặc định là 20 (per_page = 20). Cơ bản, thông thường chúng ta sẽ gán ở Controller hoặc trong Model hoặc cả hai.
Model
Có 1 cách khác là các bạn có thể tiền xử lý trước ngay trong $request.
2. Method prepareForValidation()
- Tạo một class PostRequest bằng câu lệnh dưới
Bạn có thể ép kiểu luôn cho biến per_page để chắc chắn nó là 1 số nguyên
3. Áp dụng vào các bài toán thực tế
Trong các dự án thực tế mình thường hay dùng method này để:
- Gán giá trị mặc định cho request (giống trường hợp phía trên)
- Ép kiêu dữ liệu
- Định dạnh lại dữ liệu cho request trước khi validate. Vd mình có API lấy danh sách bài viết (post) và muốn lọc theo ID danh mục (category ID). Có thể truyền cat_id dưới dạng chuỗi hoặc mảng đều được.