Routing là gì?
Routing là gì? Nôm na là Laravel không cho phép chạy file PHP bất kỳ nào một cách tùy tiện bằng việc gõ tên file lên thanh địa chỉ trình duyệt, mà tất cả phải được điều khiển thông qua Routing. Routing được chứa trong thư mục /routes/ /routes/api.php : điều khiển các route ...
Routing là gì?
- Nôm na là Laravel không cho phép chạy file PHP bất kỳ nào một cách tùy tiện bằng việc gõ tên file lên thanh địa chỉ trình duyệt, mà tất cả phải được điều khiển thông qua Routing.
-
Routing được chứa trong thư mục /routes/
- /routes/api.php: điều khiển các route của ứng dụng, như route của ứng dụng User (đăng ký, đăng nhập, ...).
- /routes/web.php: điều khiển các route của view, như route của trang top, sản phẩm, ...
- Trong phạm vi bài học này, không đi sâu vào tất cả nội dung của Routing nhe, chỉ cho các bạn biết Routing là gì, cách hoạt động của nó ra sao, làm sao sử dụng được Routing. Nội dung khác, nếu cần thì các bạn có thể tham khảo thêm tại trang chính của Laravel: Routing
Cấu trúc của một Routing
Route::METHOD('URL', ACTION);
Trong đó METHOD gồm:
Route::get($uri, $callback); // Nhận resquest với phương thức GET. Route::post($uri, $callback); // Nhận resquest với phương thức POST. Route::put($uri, $callback); // Nhận resquest với phương thức PUT. Route::patch($uri, $callback); // Nhận resquest với phương thức PATCH. Route::delete($uri, $callback); // Nhận resquest với phương thức DELETE. Route::options($uri, $callback); // Nhận resquest với phương thức OPTIONS. Route::match(['METHOD1', 'METHOD2',...], $uri, $callback); // Nhận resquest với các phương thức kết hợp. Route::any($uri, $callback); // Nhận resquest với tất cả các phương thức. Route::group('prefix'=>$uri, $callback); // Nhóm các route.
Viết một routing /routes/web.php đơn giản hiển thị dòng text "Hello World!"
Code viết
Route::get('/hello', function () { return 'Hello World'; });
- /hello: là đường dẫn, tuy không có trang cụ thể, nhưng khi gõ trên trình duyệt thì trang hello sẽ được gọi.
- Hello World: là dòng văn bản sẽ được hiển thị.
Hiển thị trình duyệt
Gõ lên trình duyệt đường dẫn http://localhost:82/hello
Mặc dù chúng ta chưa tạo file "hello", nhưng chỉ với việc khai báo routing, đã có thể hiển thị được nội dung cần thiết.
Routing với View
- Đặt vấn đề: giả sử bạn đã tạo được một trang layout /resources/views/about.blade.php, vậy làm sao để bạn hiển thị được nội dung trang này trên trình duyệt?
- Xem ví dụ sau để hiểu rõ cách gọi một Views như thế nào nhe:
Trước tiên bạn cần tạo một file about.blade.php bên trong thư mục /resources/views/ với nội dung đơn giản sau:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>About</title> </head> <body> Đây là trang About </body> </html>
Viết một routing /routes/web.php hiển thị trang view /resources/views/about.blade.php
Code viết
Route::get('/about', function () { return view('about'); });
- /about: đường dẫn gõ trên trình duyệt.
- view('about'): trả về trang View about.blade.php vừa tạo bên trên.
Hiển thị trình duyệt
Gõ lên trình duyệt đường dẫn http://localhost:82/about
- Chúng ta thấy nội dung trang about.blade.php đã được gọi.
- Khi gõ lên thanh địa chỉ trình duyệt nội dung http://localhost:82/about, khi này Routing sẽ nhận yêu cầu xử lý và trả về View
Routing với Controller
- Đặt vấn đề: chúng ta cần xử lý hàng loạt thao tác như: tính toán giá trị, xử lý lưu trữ dữ liệu, ... thì không thể nào chỉ làm bên trong ACTION của một Routing được, việc xử lý sẽ được thực hiện bên trong một Controller và trả kết quả về View để hiển thị ra trình duyệt.
- Xem ví dụ sau để hiểu rõ cách hoạt động của một Controller như thế nào nhe:
Tạo một file Controller /app/Http/Controllers/NewsController.php (chú ý cách đặt tên viết hoa viết thường nhé ^^), nội dung:
<?php namespace AppHttpControllers; use AppHttpControllersController; use IlluminateHttpRequest; class NewsController extends Controller { public function index() { return view('news'); // trả về trang news.blade.php } } // không phải thiếu thẻ đóng php đâu, cấu trúc nó vậy :"(
Tạo thêm một file View /resources/views/news.blade.php với nội dung:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>News</title> </head> <body> Đây là trang News </body> </html>
Viết một routing /routes/web.php đơn giản hiển thị trang view /resources/views/news.blade.php thông qua một controller:
Route::get('/news', 'NewsController@index');
Phân tích chút xíu:
- '/news': là đường dẫn trên trình duyệt.
-
'[email protected]'
- NewsController: là tên Controller.
- index: là tên function của Controller.
Hiển thị trình duyệt
Gõ lên trình duyệt đường dẫn http://localhost:82/news
- Chúng ta thấy nội dung trang news.blade.php đã được gọi thông qua NewsController.php
- Khi gõ lên thanh địa chỉ trình duyệt nội dung http://localhost:82/news, khi này Routing sẽ nhận yêu cầu xử lý, Routing chuyển nội dung xử lý sang Controller NewsController với function index, sau khi Controller xử lý xong sẽ trả kết quả về View
Cấu trúc Laravel
Views