Trong bài trước mình đã giới thiệu các bạn về Route trong laravel, sau khi nhận request từ người dùng, Thay vì định nghĩa tất cả các yêu cầu trong 1 file routes.php, thì Route có thể chỉnh định 1 Controller xử lý request đó.
Vị trí của Controller là app/Http/Controllers
Cách 1: Tạo trực tiếp bằng cách tạo 1 file có tên trùng với tên Class của Controller, bạn nên đặt tên file và tên class theo kiểu PascalCase ( viết hoa các chữ cái đầu tiên ) và thêm chữ Controller phía sau để chúng ta phân biên với Model
Bạn vào thư mục app/Http/Controllers và tạo 1 file có tên là DemoController.php, và thêm đoạn code sau:
namespace App\Http\Controllers; class DemoController extends Controller { // }
Ở đây mình tạo 1 Class tên DemoController, class này sẽ kế thừa từ Lớp Controller của Laravel và khai báo namespace là App\Http\Controllers
Cách 2: Tạo bằng command
Bạn vào thư mục gốc của ứng dụng mở command line tại thư mục gốc và gõ lệnh
php artisan make:controller DemoController
Lệnh này sẽ tự động tạo cho bạn 1 controller với tên DemoController
Thật đơn giản đúng ko bạn.
Trong laravel tên các action thường đặt theo dạng camelCase (viết hoa chữ cái đầu tiên của mỗi từ trừ từ đầu tiên) ví dụ getInfoUser
Mỗi action có thể có hay không có tham số truyền vào tùy trường hợp bạn sử dụng.
Mình lấy ví dụ cho bạn dễ hiểu hơn.
Tại route (file routes/web.php) bạn khai báo 1 route nhận tham số là id của user và chỉ định 1 action của Controller xử lý
Route::get('get-user/{id}', 'DemoController@getInfoUser' );
Ở ví vụ này khi bạn gõ http://localhost/congnghe5s-laravel/get-user/1 ( congnghe5s-laravel là thư mục project của bạn ) Laravel sẽ chỉ định action getInfoUser của Controller DemoController xử lý
Tại controller DemoController bạn cần khai báo 1 action tên getInfoUser và nhận tham số là id của user
public function getInfoUser($idUser){ // Nhận tham số truyền vào là id user echo $idUser; }
Trên màn hình của bạn sẽ hiện thị số 1
Bằng việc khai báo 1 Route Resource trong route, Laravel sẽ tự hiểu trong Controller chứa các phương thức phụ vụ cho CURD (creat - update - read - delete) dữ liệu.
Trong route bạn khai báo như sau
Route::resource('photos', 'PhotoController');
Với 1 câu lệnh ngắn trên Laravel sẽ hiểu là trong Controller PhotoController có các phương thức sau:
Verb | URI | Action | Route Name |
---|---|---|---|
GET | /photos | index | photos.index |
GET | /photos/create | create | photos.create |
POST | /photos | store | photos.store |
GET | /photos/{photo} | show | photos.show |
GET | /photos/{photo}/edit | edit | photos.edit |
PUT/PATCH | /photos/{photo} | update | photos.update |
DELETE | /photos/{photo} | destroy | photos.destroy |
Laravel cung cấp cho bạn cách tạo 1 Controller với các phương thức trên rất đơn giản bằng dòng lệnh
php artisan make:controller PhotoController --resource
Bài này mình tóm tắt cơ bản về Controller trong laravel, bài sau mình sẽ giới thiệu về View trong laravel và kết hợp giữa Route, Controller và View. Chúc các bạn thành công!