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 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.
Bài viết này được đăng tại [free tuts .net]
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
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:
Route::get($uri, $action); //trong đó $action có thể là 1 mảng, hàm hoặc 1 chuỗi
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.
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 ).
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/string
và 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!.