
Hướng dẫn Laravel 10: Controller & Request
1. Controller là gì?
-
Controller giúp tách biệt logic xử lý ra khỏi file
routes/web.php
→ code gọn gàng, dễ bảo trì. -
Thay vì viết logic trong
Route::get()
, ta đưa vào 1 hàm trong Controller.
2. Tạo Controller
Dùng Artisan để tạo controller:
Laravel sẽ tạo file: app/Http/Controllers/UserController.php
Ví dụ:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
// Action trả về view
public function index() {
return view('users.index');
}
// Action trả về dữ liệu public
public function show($id) {
return "Chi tiết User có ID = " . $id;
}
}
3. Gắn Controller vào Route
Trong routes/web.php
:
👉 Truy cập:
-
/users
→ trả về viewusers.index
-
/users/10
→Chi tiết User có ID = 10
4. Các loại Controller
🔹 Controller cơ bản
Ví dụ ở trên.
🔹 Resource Controller (RESTful)
Dùng để nhanh chóng tạo CRUD (Create, Read, Update, Delete).
Tự động tạo 7 action trong PostController
:
-
index()
→ danh sách -
create()
→ form thêm -
store()
→ lưu dữ liệu mới -
show($id)
→ xem chi tiết -
edit($id)
→ form sửa -
update($id)
→ cập nhật -
destroy($id)
→ xóa
Khai báo route resource:
👉 Laravel tự sinh tất cả route CRUD (php artisan route:list
để xem).
5. Request trong Laravel
🔹 Lấy dữ liệu từ Request
public function store(Request $request) { // Lấy toàn bộ input $data = $request->all(); // Lấy input theo tên $name = $request->input('name'); $email = $request->input('email'); // Lấy query string ?page=2 $page = $request->query('page', 1); return "Tên: $name - Email: $email - Page: $page"; }
Route để test:
Form test (resources/views/users/create.blade.php):
6. Validate dữ liệu Request
Laravel có sẵn hàm validate trong Controller:
👉 Nếu lỗi → Laravel tự động redirect về form + hiển thị error messages.
Trong view Blade
, hiển thị lỗi:
7. Form Request (Validate chuyên biệt)
Để tách validate ra file riêng, tạo FormRequest
:
php artisan make:request StoreUserRequest
File: app/Http/Requests/StoreUserRequest.php
Trong Controller:
use App\Http\Requests\StoreUserRequest; public function store(StoreUserRequest $request) { return "OK: " . json_encode($request->validated()); }
✅ Tổng hợp lại:
Trong bài này, bạn đã học:
-
Tạo Controller & gắn vào Route.
-
Resource Controller để CRUD nhanh chóng.
-
Lấy dữ liệu từ Request (
input
,query
,all
). -
Validate dữ liệu trực tiếp & bằng
FormRequest
.