Laravel, Laravel cơ bản

[Laravel][Bài 5] làm việc với route trong Laravel

Trong bài này chúng ta sẽ đi tìm hiểu một thành phần rất quan trọng trong laravel đó là Routing. Về cơ bản muốn khai báo 1 route trong laravel chúng phải khai báo 2 thành phần chính đó là tên của route và hành động khi thực thi route đó.

Như đoạn code trên chúng ta có thể thấy hàm Route::get() nhận 2 tham số, tham số thứ nhất là tên của route, tham số thứ 2 là một clousure và bên trong Closure này sẽ chứa các xử lí khi thực thi route này. Mình giải thích thêm Route::get() thì hàm get() chính là method khi chúng ta request lên server, ngoài get() ra chúng ta sẽ còn nhiều method khác nhứ là post(), put(), patch(), delete()…

Mặc định tất cả các route trong Laravel sẽ được khai báo ở thư mục  routes/web.php. 

Một cách khác để chúng ta khai báo một route đó là thay vì dùng 1 closure để xử lí thì chúng ta sẽ chuyển các xử lí này vào trong một Controller cụ thể nào đó theo cú pháp như sau.

Như cú pháp ở trên chúng ta có thể thấy được khi người dùng gõ vào trình duyệt địa chỉ /home thì hệ thống sẽ chuyển đến HomeController và đọc các lệnh xử lí ở trong hàm index của Controller này.

Đọc lí thuyết không thôi chắc sẽ nhàm lắm, chúng ta mở ứng dụng lên rồi code thôi nào.

Khai báo một route và truyền biến trên route

Như mình đã nói ở trên để khai báo route thì chúng ta sẽ file web.php tại routes/web.php. Và viết một route đơn giản như sau:

 

Vào trình duyệt gõ vào đường dẫn localhost:8000 các bạn sẽ thấy chữ All cats xuất hiện trên màn hình.

Truyền biến trên route

Trong ứng dụng thực tế, nhiều lúc chúng ta cần phải lấy được các giá trị trên đường dẫn (URL) để xử lý. Mình ví dụ: /users/123 khi người dùng gõ đường dẫn này vào trong route thì hệ thống sẽ bắt số 123 để thực hiện xử lí một logic nào đó.

để tạo được route như vậy ta phải cần khai báo cú pháp như trên biến {id} trên route sẽ là biến động, và tại function xử lí nếu muốn lấy được biến id thì cần phải khai báo 1 tham số tên là $id trên hàm xử lý. Bây giờ các bạn hãy bật trình duyệt lên và gõ trên đường dẫn localhost:8000/cats/123 lúc này trên trình duyệt sẽ xuất hiện dòng ‘Cat123‘.

Tương tư như vậy nêu muốn truyền nhiều biến trên route ta cũng có thể khai báo như sau:

bay giờ bạn thử chạy trình duyệt và gõ localhost:8000/cats/123/tom sẽ thấy trên màn hình kết quả Cat123 name is: tom. Như vậy chúng ta đã biết cách truyền biến trên route rồi đúng không nhỉ, rất đơn giản.

Ngoài ra chúng ta còn có thể validate tham số truyền trên route.

Với cách viết như trên thì ta bắt buộc tham số id phải là kiểu số, nếu khác kiểu số thì sẽ không vào được route này.

Quản lý lỗi xảy ra trong Laravel.

Khi làm việc với laravel nếu khi xảy ra lỗi thì hệ thống sẽ bị ngưng và trả về trang view mặc định của laravel tạo sẵn, điều này hoàn toàn không tốt chút nào đối với một ứng dụng web, chúng ta cần phải xử lí được lỗi và trả về file view theo mong muốn của mình.

Ở đây mình sẽ hướng dẫn các bạn xử lý 2 lỗi chính đó là 404 (lỗi không tìm thấy) và 403 (Lỗi không được quyền truy cập). Mong muốn ở đây nếu xảy ra 1 trong 2 lỗi đó thì chúng ta phải trả về 1 file view tương ứng để thông báo cho người dùng. Thông tin chi tiết của các mã lỗi các bạn có thể tham khảo tại địa chỉ này: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Trong Laravel nếu bạn muốn hiện thị mã lỗi nào trên view thì chỉ cần tạo tên mã lỗi trong thư mục  resources/ views/errors

Ví dụ nếu muốn tạo file view cho mã lỗi 404 thì ta cần tạo một file view tại địa chỉ  resources/views/errors/404.blade.php. Và nội dụng file 404.blade.php là nội dụng bạn cần hiển thị khi xảy ra lỗi này. Tạo tương tự cho các mã lỗi khác.

Sau khi tạo xong file 404.blade.php các bạn vào trình duyệt gõ vào 1 route không tồn tại trong hệ thống thì lập tức ứng dụng của bạn sẽ tự động chuyển tới file 404.blade.php.

Chuyển hướng trên route

Đôi lúc ứng dụng của các bạn sẽ cần chức năng khi người dùng truy cập vào route này thì chuyển hướng đến một route khác. Laravel hỗ trợ các bạn làm việc đó rất dễ dàng.

Như dòng code trên khi các bạn truy cập vào đường đẫn / thì hệ thống sẽ chuyển hướng đến đường dẫn /cats thông qua hàm redirect. Các bạn cần khai báo thêm môt route /cats nữa để ứng dụng của bạn chạy cho đúng.

Truyền biến qua view

Mặc định trong Laravel tất cả các view phải được khai báo ở thư mục  resources/views. Bây giờ mình sẽ tạo một file view tại địa chỉ resources/views/about.blade.php (các bạn lưu ý, tất cả file view trong laravel phải được viết dưới định dạng .blade.php). Bây giờ mình sẽ tao một route để hiện file view này ra nhé.

 

Giải thích về đoạn code trên, để gọi trả dữ liệu về view thì chúng ta gọi hàm view() với 2 tham số, tham số thứ nhất là tên của file view ở đây là about (chỉ cần khai báo tên file không cần khai báo thành phần .blade.php), tham số thứ 2 là hàm compact() hàm này sẽ truyền biến từ route qua view với các tham số là tên của biến, nếu có nhiều hơn 1 biến thì chỉ cần thêm dấu , và khai báo biến thứ 2, compact(‘bien1’, ‘bien2’) không có dấu $ nhé.

Bây giờ mình sẽ đi viết code cho file about.blade.php

Bây giờ các bạn hãy bật trình duyệt lên và gõ localhost:8000/about để xem kết quả nhé.

Các bạn  có thể xem lại code tại đây. https://github.com/wechiase/laravel/tree/96192834a1b0a050c0e16bd5d900fefd4706c5f4

Như vậy mình đã hướng dẫn cho các bạn cơ bản về route trong laravel. Mình xin kết thúc bài này tại đây, hẹn các bạn ở bài viết tiếp theo nhé.

Spread the love

Leave a Reply

Your email address will not be published. Required fields are marked *