Bài 05: 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 là gì, và cách sử dụng một vài loại route cơ bản. Bài viết chỉ dừng ở mức tìm hiểu cách sử dụng route trong Laravel chứ không đi vào ứng dụng thực tế, sau khi xong serie căn bản chúng ta sẽ tìm hiểu sâu nó ở một bài khác.

1. Route trong laravel là gì?

Route dịch ra có nghĩa là tuyến đường, nghe chẳng có tý gì liên quan đến lập trình nhưng ta có thể hiểu rằng route nó nằm vai trò chỉ đường cho yêu cầu (request) đi đến đâu. Ta có thể hiểu nôm na như sau: khi index.php nhận được request từ người dùng, nó sẽ đưa request này cho route, từ route sẽ chỉ dẫn tiếp cho request này đi đến đâu hoặc cũng có thể trả lời ngay tại route.

Ví dụ khi người dùng truy cập vào website với đường dẫn là domain.com/news, thì lúc này Route sẽ nhận được một phần trong URL là /news và nó sẽ xử lý request đó gọi đến Controller News hoặc là một thao tác khác  (xử lý thế nào thì tùy vào coder). Đặc biệt hơn các Framework trước đây như Codeigniter  là trong Laravel Route có rất nhiều loại khác nhau như Route dành cho phương thức POST, Route dành cho phương thức GET ở cùng một URL.

Tóm lại, ban đầu bạn chỉ cần hiểu cơ bản rằng route trong laravel có nhiệm vụ định hướng request của laravel.

Hầu hết các route của laravel định nghĩa trong file  app/routes.php. Và đây là danh sách các loại  Route bao gồm các loại cơ bản và thường được sử dụng sau:

  • Route::get phương thức GET
  • Route::post phương thức POST
  • Route::match kết hợp hiều phương phức
  • Route::any nhận tất cả các phương thức
  • Route::filter tạo ra bộ lọc nhằm mục đích nào đó, ví dụ tạo bộ lọc kiểm tra đã đăng nhập hay chưa
  • Route::group gom các route lại với nhau thành một nhóm
  • Route::controller gọi đến controller tương ứng
  • Route::resource sử dụng với resource controller

2. Sử dụng route trong laravel

Lưu ý: Tất cả các đoạn code dành cho Route đều nằm trong file app/routes.php nên những ví dụ dưới đây bạn đều thêm trong file này nhé.

Sử dụng Route::get() trong laravel

Route này sẽ tiếp nhận các request với phương thức GET, cách sử dụng route này khá đơn giản:

Cú pháp:

Route::get($uri, $action);
//trong đó $action có thể là 1 mảng, hàm hoặc 1 chuỗi

Cách sử dung:

Khi action là một hàm:

Giả sử ta cần viết Route cho URL http://tênmiềnảocủabạn/demo với phương thức GET thì ta thêm đoạn code như sau:

Route::get('/demo',function(){
	return 'Đây là demo đầu tiên';
});
//trong đó: /demo là uri và function callback kia là action

Bạn truy cập vào đường dẫn: http://tênmiềnảocủabạn/demo. Ví dụ của mình là http://demolaravel.com/demo thì sẽ xuất hiện dòng chữ 'Đây là demo đầu tiên' trên trình duyệt.

/su-dung-route-trong-laravel.PNG

Khi action là 1 mảng: 

Có 2 tham số thường  được sử dụng trong mảng là name, và uses, ngoài ra bạn còn có thể sử dụng filter trong này. Trong đó name là tên của route mình sẽ đặt, còn uses sẽ gọi đến phương thức của  Controller nào đó (bạn sẽ hiểu rõ hơn ở bài sau, hãy đón đọc wink).

Cú pháp sử dụng:

Route::get($uri,$array);

Bạn mở file app/routes.php và thêm đoạn sau:

Route::get('/array',['name'=>'get.array','uses'=>'HomeController@showWelcome']);
//trong đó /array là uri
//get.array sẽ là tên của route này
//uses route này sẽ gọi đến phương thức showWelcome của HomeController

Bạn truy cập vào đường dẫn: http://tênmiềnảocủabạn/array và sẽ thấy hiện ra một giao diện không khác gì khi bạn chạy  http://tênmiềnảocủabạn/ đúng không nào. Tại sao lại vậy? Trước hết bạn nhìn vào đoạn code trên sẽ thấy HomeController và thắc mắc ở đâu ra cái quái này vậy. Câu trả lời là đó là controller mặc định có sẵn khi cài đặt laravel, bạn có thể xem controller này tại file app/controllers/HomeController.php. Khi route này được kích hoạt nó sẽ gọi đến phương thức showWelcome của HomeController và để controller này xử lý việc còn lại.

Khi action là 1 chuỗi:

Cú pháp sử dụng:

Route::get($uri, $string);
//trong đó $string có dạng: têncontroller@phươngthức<br>

Bạn mở file app/routes.php và thêm đoạn sau:

Route::get('/string','HomeController@showWelcome');

Bạn truy cập vào đường dẫn: http://tênmiềnảocủabạn/stringvà sẽ thấy hiện ra một giao diện không khác gì ở trên, nhưng bạn để ý sẽ thấy rằng ở phần này không có tên cho route, tên ở đâycó ý nghĩa chính là sử dụng để gọi lại cho dễ (hãy đợi những bài sau để hiểu rõ hơn).

Sử dụng Route::post() trong laravel

Route này tiếp nhận các request với phương thức POST, các sử dụng và cú pháp không khác gì với Route::get().

Cú pháp:

Route::post($uri, $action);
//uri và action tương tự như Route::get<br />

Chắc hẳn không ít bạn sẽ thắc mắc sao 2 cái giống nhau đến thế thì khi nào nên dùng get khi nào nên dùng post?

Nếu vậy thì tiện đây mình cũng giải đáp luôn, như ở trên mình đã nói get và post nhận 2 request hoàn toàn khác nhau là GET và POST. Bạn nên sử dụng get cho việc lấy dữ liệu như hiển thị bài viết, lấy dữ tiệu bằng ajax, ... Nên sử dụng post khi có thao tác thay đổi cơ sở dữ như thêm, xóa, hay sửa dữ liệu.

Sử dụng Route::match trong laravel()

Ngoài các method POST và GET phổ biến trong laravel còn có thêm PUT, PATCH, DELETE vậy nên sinh ra Route này.

Cú pháp:

Route::match($methods, $uri, $action);
//trong đó $methods có thể là 1 mảng các method như ['GET', 'POST','PUT']
//$uri và $action giống như các route kể trên

Ví dụ: Bạn mở file app/routes.php và thêm đoạn sau:

Route::match(['GET', 'POST','PUT'],'/match',function(){
    return 'match route';
});

Route này sẽ nhận request với 3 method là PUT, POST, GET

Sử dụng Route::any trong laravel()

Cú pháp và cách sử dụng của loại route này không khác Route::get() là mấy, chỉ có điều route này nhận request với tất cả các method như: POST, GET, DELETE, ...

Cú pháp:

Route::any($uri, $action);

3. Kết Luận

Vậy trong bài viết này mình đã giới thiệu sơ qua cho các bạn về 4 loại route cơ bản thường được sử dụng. Ở bài sau mình sẽ tiếp tục giới thiệu những loại route còn lại và tìm hiểu luôn controller trong laravel    , hãy đón đọc!.

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Group Facebook để được hỗ trợ nhanh nhất.