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.