Bài 5: Controller trong laravel 5.x

Admin
30-03-2017

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

1. Cách tạo 1 Controller trong laravel 5.x

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.

2. Tạo action trong Controller

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

3. Resource Controllers trong Laravel

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

Tổng kết:

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!