LARAVEL 4X CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 06: Sử dụng Route::controller và Route::resource trong laravel

Ở bài trước mình có giới thiệu tổng quan về rout trong Laravel và việc sử dụng các route post, get, any, ... để gọi đến 1 action của controller, nhưng nếu bạn có nhiều controller mà mỗi controller lại có nhiều action thì chẳng lẽ mỗi action ta viết 1 dòng Route::method() hay sao. Nên ở bài viết này mình sẽ giới thiệu và hướng dẫn sử dụng 2 route khá quan trọng trong laravel là Route::controller() và Route::resouce() có thể giải quyết vấn đề vừa nêu.

1. Route::controller trong laravel

Cú pháp sử dụng:

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Route::controller($uri, $controller, $names);
//trong đó $names là một mảng quy định tên cho action trong controller, có thể có hoặc không.

Ví dụ:

Giả sử bạn có controller là HomeController, controller này có 3 action khác nhau, nếu như theo bài trước thì cần phải viết 3 dòng cho 3 action của controller này. Nhưng nếu bạn sử dụng Route::controller() thì chỉ cần 1 dòng mà thôi:
Giả sử ta có 3 action như sau: File app/controllers/HomeController.php

<?php
	//Đây chỉ là một ví dụ nhỏ, bạn chưa cần để ý đến controller này nhiều
class HomeController extends Controller {
	public function getFirst(){
		return 'this is First action';
	}
	public function getSecond(){
		return 'this is Second action';
	}
	public function postThird(){
		return 'this is Third action';
	}
}

Bây giờ bạn mở file app/routes.php bạn thêm:

Route::controller('/controller','HomeController',['getFirst'=>'first','getSecond'=>'second','postThird'=>'third']);
/****************
trong đó:
/controller là uri
HomeController là controller sẽ hoạt động
['getFirst'=>'first','getSecond'=>'second','postThird'=>'third'] là một mảng chứa tên của các action của controller (tạm thời chưa cần quan tâm đến phần này).

**************/

Bây giờ bạn truy cập 3 vào 3 đường link:

http://tênmiềnảocủabạn/controller/first
http://tênmiềnảocủabạn/controller/second
http://tênmiềnảocủabạn/controller/third

Sẽ nhận được các kết quả tương ứng như sau: (nếu đường dẫn thứ 3 chỉ thông báo ra câu "Whoops, looks like something went wrong." thì bạn phải bật debug của laravel lên - mình đã nói đến ở cuối bài cấu trúc thư mục Laravel)

su dung route controller va routere source trong laravel PNG

su dung route controller va routere source trong laravel 2 PNG

su dung route controller va routere source trong laravel 3 400x213 PNG

Tới đây bạn sẽ có hai câu hỏi thắc mắc như sau:

  • 2 cái đầu chạy ngon ơ sao cái cuối lại lỗi kỳ ta?
  • Nếu như thế thì làm sao biết action nào nhận method POST, action nào nhận method GET để làm việc?

Chắc hẳn đây là 2 câu hỏi mà các bạn đang thắc mắc đúng không nào! Các bạn nhìn lại file HomeController đi, có thấy điểm gì đặc biệt ở các action không nào, đó chính là tiền tố get hoặc post, Laravel dựa vào tiền tố này để phân biệt action nào nhận POST action nào sẽ nhận GET. Đó chính là lý do vì sao ở action postThird báo lỗi, bởi vì khi bạn truy cập trên thanh địa chỉ thì đó là phương thức GET.

2. Route::resource() trong laravel

Route này được laravel tạo ra nhằm mục đích chính là xây dựng RESTful (xây dựng Webservice), route này sẽ đi kèm với một RESTful controller. Là người mới làm quen với laravel hay php thì route này chưa có nhiều ý nghĩa.

Trong RESTful controller sẽ có các action cơ bản sau:

//hiển thị cả danh sách
index()
//thêm mới
create()
//lưu trữ một tài nguyên mới
store()
//hiển thị 1 tài nguyên theo tham số truyền vào
show($id)
//sửa 1 tài nguyên theo tham số truyền vào
edit($id)
//cập nhật 1 tài nguyên theo tham số truyền vào
update($id)
//xóa 1 tài nguyên
destroy($id)
//trong đó $id là tham số truyền vào

Để tạo 1 RESTful controller thì có 2 cách:

  • Cách 1 là tự tạo bằng tay file controller
  • Cách 2: sử dụng dòng lệnh của laravel hỗ trợ

//Cú pháp sử dụng:
php artisan controller:make "têncontroller" [tùy chọn]
/**************************
Ví dụ:
//tạo RESTful controller với tên DemoController có đầy đủ các action<br />
php artisan controller:make DemoController<br />
//tạo RESTful controller với tên DemoController chỉ có 2 action là index và show
php artisan controller:make DemoController --only=index,show
//tạo RESTful controller với tên DemoController có tất cả action ngoại trừ index
php artisan controller:make DemoController --except=index
*************************/

Các action của RESTful controller mà Route::resource hỗ trợ:

Method URI Action Route name
GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{id} show resource.show
GET /resource/{id}/edit edit resource.edit
PUT/PATCH /resource/{id} update resource.update
PUT/PATCH /resource/{id} destroy resource.destroy

Tuy route này khá quan trọng nhưng vì đang ở mức cơ bản nên mình chỉ giới thiệu qua cho các bạn biết.

3. Lời kết

Tới đây ta đã thấy laravel thật tuyệt vời phải không, chỉ với 2 loại route này đã giúp ta giảm được kha khá công sức rồi đó. Nhưng trong laravel không chỉ có vậy, và trong bài tiếp theo mình sẽ giới thiệu tới các bạn 2 loại route cũng không kém phần quan trọng đó là Route::filer và Route::group, hãy đón đọc nhé.

Cùng chuyên mục:

Bài 1: Laravel là gì? hướng dẫn cài đặt laravel bằng Composer

Bài 1: Laravel là gì? hướng dẫn cài đặt laravel bằng Composer

Bài 04: Tìm hiểu cấu trúc của Laravel 5.x

Bài 04: Tìm hiểu cấu trúc của Laravel 5.x

Và trong bài này, chúng ta sẽ tìm hiểu cấu trúc của Laravel để có…

Bài 03: Hướng dẫn cài đặt Laravel 5.x

Bài 03: Hướng dẫn cài đặt Laravel 5.x

Để bắt đầu series tự học Laravel 5x thì công việc đầu tiên là bạn…

Bài 02: Hướng dẫn sử dụng Composer PHP

Bài 02: Hướng dẫn sử dụng Composer PHP

Composer là một công cụ tuyệt vời cho tín đồ PHP và trong bài này,…

Bài 11: Sử dụng Query Builder (Model) trong laravel

Bài 11: Sử dụng Query Builder (Model) trong laravel

Model trong mô mình MVC dùng để tương tác với cơ sở dữ liệu và…

Bài 10: Sử dụng Blade template engine trong Laravel

Bài 10: Sử dụng Blade template engine trong Laravel

Template engine có tác dụng giúp sạch đi những đoạn code PHP nằm trong View…

Bài 4: Sử dụng View trong laravel

Bài 4: Sử dụng View trong laravel

Trong bài này chúng ta sẽ tìm hiểu đến View, một thành phần khá quan…

Bài 3: Sử dụng Controller trong laravel

Bài 3: Sử dụng Controller trong laravel

Sau khi route nhận được request thì sẽ chuyển hướng request đến cho controller và…

Bài 07: Sử dụng Route::filter và Route::group trong laravel

Bài 07: Sử dụng Route::filter và Route::group trong laravel

Giới thiệu về 2 loại route rất quan trọng trong việc xử lý logic và…

Bài 02: Tổng quan về route trong laravel

Bài 02: Tổng quan về route trong laravel

Trong khuôn khổ bài viết này, mình sẽ giới thiệu đến bạn route trong laravel…

Bài 04: Những công cụ tốt nhất hỗ trợ học laravel

Bài 04: Những công cụ tốt nhất hỗ trợ học laravel

Trước hết, ai khi học php đều chọn cho mình 1 IDE hoặc text editor…

Bài 02: Cấu trúc thư mục cơ bản của Laravel

Bài 02: Cấu trúc thư mục cơ bản của Laravel

Bất kì một Framework nào cũng đưa ra một mô hình các cấu trúc thư…

Bài 03: Cài đặt Openserver và tạo domain ảo trên localhost

Bài 03: Cài đặt Openserver và tạo domain ảo trên localhost

Trong bài 3 này mình sẽ giới thiệu các bạn cách tạo tên miền ảo…

Bài 01: Composer là gì?

Bài 01: Composer là gì?

Composer là một công cụ quản lý các thư viện trong PHP (Dependency Management), công…

Một cách quản lý filter trong Laravel

Một cách quản lý filter trong Laravel

Filter là một thành phần tuyệt vời mà laravel cung cấp cho chúng ta, nó…

Sử dụng Event trong Laravel

Sử dụng Event trong Laravel

Trong bài này mình sẽ giới thiệu event, cách tạo event và bắt event trong…

Bài 01: Laravel là gì? Hướng dẫn cài đặt laravel trên windows

Bài 01: Laravel là gì? Hướng dẫn cài đặt laravel trên windows

Trong chuỗi bài viết này mình sẽ viết về laravel 4.2.* trong môi trường windows,…

Top