Routes, Controllers, View trong Laravel 5

Bởi Hung Nguyen vào December 2015

1. Routes

Định nghĩa mối quan hệ giữa các đường dẫn (url), các liên kết (link) . Khi một liên kết được tạo ra bằng cách sử dụng tên của routes, thì một định danh liên kết thống nhất sẽ được tạo ra bởi laravel.

Nói nôm na ở đây chúng ta có thể hiểu đơn giản thì routes chính là 1 cách để bạn viết lại đường dẫn của ứng dụng (giống như htaccess trong các website truyền thống) và laravel có thể hiểu được cách viết này và sử dụng nó để gọi các đối tượng, phương thức cần thiết.

Routes trong laravel được quy định trong file app -> Http -> routes.php

Mở file này lên bạn sẽ thấy đoạn mã như sau :

1
Route::get(‘/’, ‘WelcomeController@index’);

2. Controllers

Thay vì định nghĩa tất cả các yêu cầu trong 1 file routes.php, thì Controller tổ chức nhóm tất cả các logic này trong class Controller để tiện xử lý. Vị trí của Controller là app/Http/Controllers

Quay lại đoạn mã ở trên

2
3
4
public function index()
{
    return view(‘welcome’);
}

File view welcome này nằm trong thư mục resources -> views -> welcome.blade.php, chịu trách nhiệm hiển thị ra nội dung theo chủ ý của controller

Ví dụ

Trong ví dụ này, chúng ta sẽ edit lại file routes.php và thêm 1 đoạn mã như sau

1
Route::get(‘/contact’, ‘WelcomeController@contact’);

Trong file WelcomeController.php, ta thêm function gọi là contact()

2
3
public function contact(){
    return view(‘pages.contact’);
}

Trong thư mục views, các bạn tạo 1 folder tên pages và tạo 2 file đặt tên là contact.php

Có nội dung là:

Đây là trang contact

Tiếp đến, vào trình duyệt gõ  địa chỉ như sau :

1
http://localhost/laravel-5/public/contact

sẽ có kết quả là :

Đây là trang contact

Thật đơn giản đúng không nào, từ ví dụ trên, các bạn sẽ để ý thấy là khi ta đặt các file contact.php trong 1 thư mục là pages, thì các phương thức contact() trong WelcomeController sẽ gọi các view contact.php từ thư mục pages và vào trong bằng dấu chấm (.). Bạn có thể thay thế dấu chấm (.) bằng dấu cách (/) như dưới đây đều được :

1
return view(‘pages/contact’);