Bài 3 : Laravel 5: Routes , Controllers, Views

học laravel 5

Tiếp tục chuỗi seri học Laravel 5, bài hôm nay mình tiếp tục giới thiệu với các bạn về Routes, Controllers, Views trong Laravel 5. Nếu các bạn đã làm quen với Laravel 4 thì các khái niệm này không còn lạ lẫm gì nữa, về cơ bản thì Routes, Controllers, Views ở Laravel 5 không khác gì so với Laravel 4, có khác ở đây chỉ là cấu trúc sắp xếp thư mục.

Sau khi đã cài đặt xong laravel 5, thư mục app của chúng ta sẽ có cấu trúc như sau :

laravel-5-app

cấu trúc thư mục app trong laravel 5

Nếu để ý, các bạn sẽ thấy folder Controllers trong Laravel 5 sẽ nằm trong thư mục Http cùng cấp với file routes.php. Ngoài ra các vị trí và cấu trúc folder khá là khác so với Laravel 4. Nhưng các bạn đừng quá bận tâm về điều này, vì theo nghiên cứu của mình thì về bản chất routing, views, controllers vẫn không thay đổi nhiều. Những điều khác biệt thì chúng ta đi sâu hơn vào các bài tới sẽ nắm kĩ hơn.

Vào vấn đề chính nào. Let’s go !

Có thể bạn quan tâm: Tặng coupon 40% giá trị khóa học tạo website với Laravel 5

Routes, Controllers, View trong Laravel 5

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. (xem lại bài giới thiệu về 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 :

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

Route::get('/', 'WelcomeController@index');

Điều này mang ý nghĩa là khi người dùng truy cập vào đường dẫn

http://localhost/laravel-5/public

thì Laravel sẽ gọi tới Controller có tên là WelcomeController (nằm trong app -> Http -> Controllers -> WelcomeController.php),  với phương thức là index (ngăn cách giữa controller và phương thức của nó là dấu @).

3. Views

Views chứa các mã html dùng để hiển thị nội dung được chỉ định bởi Controllers, vị trí của View trong ứng dụng Laravel là  resources/views

Tiếp tục mục 2. phương thức index trong controller WelcomeController này sẽ tiếp tục gọi View là welcome

Gợi ý: Bạn đang quan tâm đến Bitcoin? Tìm hiểu ngay Bitcoin Toàn Tập Cho Người Mới nhé!

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, mà ở đây chính là nội dung bạn thấy như dưới đây khi cài đặt xong Laravel ở bài trước:

cài đặt laravel 5

view hiển thị dữ liệu từ WelcomeController.php

4.Các ví dụ

Ví dụ a :

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

Route::get('/contact', 'WelcomeController@contact');

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

public function contact(){
    echo "Đây là trang contact";
}

Giờ thì các bạn vào trình duyệt, gõ địa chỉ :

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

sẽ thấy nội dung :

Đây là trang contact

Rất dễ hiểu đúng không nào, quy trình là Routes gọi phương thức của Controllers, hiển thị ra Views.

Ví dụ b :

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 và about.php, nội dung của 2 file này đơn giản lần lượt như sau :

contact.php

Đây là trang contact

about.php

Đây là trang about

Tiếp đến trong file routes.php bạn thêm 1 đoạn route mới dành cho trang about như sau :

Route::get('/about', 'WelcomeController@about');

Trong file WelcomeController.php, bạn sửa lại function contact() 1 chút như sau :

public function contact(){
    return view('pages.contact');
}

và thêm 1 function mới tên là about() dành để gọi view about

public function about(){
    return view('pages.about');
}

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

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

sẽ có các kết quả lần lượt là :

Đây là trang contact
Đây là trang about

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, about.php trong 1 thư mục là pages, thì các phương thức contact(), about() trong WelcomeController sẽ gọi các view contact.php, about.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 :

return view('pages/contact');

Mình dừng bài viết ở đây, chúc các bạn học tốt và chúc mừng năm mới 🙂

Gợi ý : Nếu như có một khóa học với giá cực rẻ, lại còn được tặng mã giảm giá 40%, học xong có khả năng đi làm ngay và được mình hỗ trợ tìm việc, bán sẽ tham gia chứ ? Nếu câu trả lời là có, mời bạn xem thông tin chi tiết về khóa học tại đây

 

Chia sẻ nhanh bài viết ↓

Hieu

"Những người điên rồ tới mức nghĩ mình có thể thay đổi được thế giới chính là những người có thể làm được điều đó" _ Steve Job

Subscribe
Notify of
guest

42 Bình Luận
Newest
Oldest Most Voted
Nam
Nam
6 năm trước

anh ơi, phiên bản mới nhất có khác gì không ạ? em vào thấy không có file routes.php

Leng Keng
9 năm trước

chạy link:http://localhost/laravel-5/public/contact
thì em dính lỗi này. GG mãi chưa mà chưa fix được.
“ReflectionException in Container.php line 749:
Class App\Http\Controllers\WelcomeController does not exist”
Bác nào biết chỉ em với. ib teamview.

fitnessmotivationtv
9 năm trước

bài 4 nằm ở đâu vậy bạn ơi, hay quá (y)

Lam Quách Văn
Lam Quách Văn
9 năm trước

php artisan make:controller ContactController –plain —————————- sao nó bị lỗi như thế này z AD
[Symfony\Component\Console\Exception\RuntimeException]
The “–plain” option does not exits.

Trung Quan
10 năm trước

anh ơi sao em không tìm thấy WelcomeController (nằm trong app -> Http -> Controllers -> WelcomeController.php) nhỉ, em vào chỉ thấy thư mục Auth và file controller.php thôi :(((

hoangthinhungblog
Phản hồi đến  Trung Quan
9 năm trước

Giống mình! không có file WelcomeController

Nguyễn Hưởng
10 năm trước

Sao lúc tạo controller mình gõ thêm –plain ở cuối nó lại báo “option not exists” nhỉ. Nếu xóa đi thì nó lại thông báo tạo controller thành công

Bin
Bin
10 năm trước

A ơi e chạy “php artisan” http://localhost:8000/contact thì chày tốt nhưng chạy localhost thường “http://localhost:81/php/laravel/public/contact” nó báo sai thì có sao k a?

Hà Đặng
10 năm trước

Bản 5.1 nó lại thay đổi file routes.php nữa rồi

XuXu Do
XuXu Do
10 năm trước

mih lm bang xampp va chay tren windown, lm jog vay nhug no ko chay, p co the them vao video

Kiên
Kiên
10 năm trước

anh ơi lúc em gõ lệnh tạo file ContactController.php như anh trong cmd thì nó hiện ra là “there are no comands defined in the “make” namespace ” là sao nhỉ :(((

42
0
Bạn có ý kiến về bài viết, hãy để lại bình luận nhé!x
()
x