Mô Hình MVC sử dụng trong Laravel

Sau route thì một phần rất quan trọng khác được sử dụng rất thường xuyên trong Laravel Framework là mô hình tổ chức source code MVC. Mô hình MVC là một kiểu kiến trúc giúp cho việc tổ chức source code trở lên có hệ thống.

Thực tế thì để hiểu mô hình MVC không khó hiểu. Ở đây thay vì định nghĩa tôi sẽ dùng một ví dụ thực tế để bạn dễ dàng tiếp thu kiến thức. Và một ví dụ đơn giản nhất là chiếc Tivi trong nhà bạn. Người xem mở Tivi lên sử dụng remote. Ở đây remote đóng vai trò như một Controller giúp để lựa chọn kênh nào để xem. Sau khi người xem bấm chọn kênh, Tivi sẽ gửi yêu cầu tới đài truyền hình tương ứng với kênh đã chọn. Ở đây các đài truyền hình đóng vai trò như một Model, các nhà đài này sẽ truyền dữ liệu (hình ảnh, âm thanh) về sau khi nhận được yêu cầu. Khi nhận được dữ liệu trả về này thì Tivi sẽ phát chương trình cho người xem thông qua loa và màn hình. Loa và màn hình ở đây đóng vai trò của một View.

Bây giờ chúng ta cùng tìm hiểu một ví dụ cụ thể trong Laravel để hiểu về mô hình này. Thêm câu lệnh sau vào cuối file routes.php:

Route::get('/welcome', 'HomeController@showWelcome');

Câu lệnh trên dùng đểroute (hướng) các request với URL có dạng /welcome về HomeController và tiếp sau đó sẽ tiếp tục được xử lý trong method welcome. Mở file HomeController.php bạn sẽ thấy có một đoạn mã như sau:

public function showWelcome()
{
    return View::make('hello');
}

Đoạn mã trên tương tự như hàm callback trongroutes.phptrước khi chúng ta thay đổi nội dung của nó. Ở đây câu lệnh View::make('hello') sẽ trả về nội dung có trong file hello.blade.php. File này có một dòng lệnh như sau:

...
<h1>You have arrived.</h1>
...

Bây giờ trên trình duyệt nhập vào địa chỉ http://laravelapp.dev/welcome và bấm enter. Trình duyệt sẽ hiển thị hình ảnh logo của Laravel và một dòng tiêu đề với nội dung You have arrived.:

Laravel MVC

Tổng quát quá trình trên, đầu tiên routes.php thực hiện xong nhiệm vụ chuyển việc xử lý request có dạng http://laravelapp.dev/welcome về method welcome trongHomeControllerHomeController kiểm soát quá trình thực thi của ứng dụng. Ở đây nó trả về nội dung của file hello.blade.php. Và hello.blade.php đóng vai trò của một View khi nó chịu trách nhiệm trình bày thông tin cho người dùng.

Trong phát triển ứng dụng web, mô hình MVC được hiển như sau:

  • Controller: Kiểm soát luồng thực thi của ứng dụng. Dựa trên yêu cầu của người dùng Controller sẽ xác định luồng thực thi tiếp theo.
  • Model: Xử lý việc trả về dữ liệu khi nhận được yêu cầu từ Controller (nếu có) và trả thông tin về cho Controller.
  • View: Controller sau khi nhận được thông tin trả về từ Model nó sẽ trả về cho View. View dựa trên thông tin trả về sẽ quy định cách hiển thị thông tin như thế nào.