Bài 7 : Mô hình MVC trong Laravel 5

học laravel 5

Trong bài hướng dẫn sử dụng Eloquent trong Laravel 5, các bạn đã có kiến thức cơ bản về cách mà Eloquent trong Laravel 5 hoạt động rồi đúng không nào. Bài viết hôm nay mình sẽ hướng dẫn các bạn cách hoạt động của mô hình MVC trong Laravel 5. Bạn nào chưa nắm được mô hình MVC là gì thì có thể tham khảo bài này nhé : Tìm hiểu về mô hình MVC trong PHP

Mô hình MVC trong Laravel 5

Trước tiên bắt đầu vào tìm hiểu cách dữ liệu được chuyển đi theo mô hình MVC trong Laravel 5, chúng ta cần insert vài dòng dữ liệu vào bảng articles đã được tạo ra trong bài trước.

Mở cmd, di chuyển đến thư mục Laravel-5

cd C:/wamp/www/laravel-5

Sử dụng php artisan tinker để thêm record mới. Gõ

php artisan tinker

để vào chương trình, tiếp đến gõ lần lượt như sau để thêm 1 record mới vào db

>>> $articles = new App\Articles
>>> $articles->name = "Hieu"
>>> $articles->author = "bla bla bla"
>>> $articles->save();

Chạy xong các lệnh trên, lúc này bảng articles đã có thêm 1 record mới. Để thêm dòng dữ liệu thứ 2, bạn vẫn cứ tiếp tục làm theo trình tự như trên. Sau khi đã hoàn tất thêm các dòng dữ liệu mẫu vào database, chúng ta đi tới bước kế tiếp.

1. Tạo route

Tại đây, mình sẽ tạo một route mới để sử dụng xuyên suốt bài viết. Mở file routes.php, thêm route  mới, gọi tới phương thức index() trong controller Articles như sau:

Route::get('/articles', 'ArticlesController@index');

2. Tạo Controller

Ở route trên, chúng ta sử dụng ArticlesControler, vì vậy mình tiếp tục tạo một controller mới là ArticlesController.php bằng cách sử dụng php artisan.

php artisan make:controller ArticlesController --plain

Chạy lệnh trên, 1 file ArticlesController.php đã được tạo ra trong thư mục Http có nội dung như sau :

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class ArticlesController extends Controller {

	//

}

Trong file này mình thêm 1 phương thức mới là index(), trong phương thức này mình sẽ gọi tới file model Articles.php mà chúng ta đã tạo ở bài trước

public function index(){
   $articles = Articles::all();
}

Các bạn lưu ý là để có thể sử dụng được phương thức index() trên thì các bạn cần phải import class Articles vào, mình sẽ thêm đoạn này ở trên đầu file ArticlesController.php

use App\Articles;

Lúc này toàn bộ nội dung ArticlesController.php sẽ như sau:

<?php namespace App\Http\Controllers;
use App\Articles;
use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class ArticlesController extends Controller {

	//
	public function index(){
		$articles = Articles::all();

                return $articles;
	}
}

Giờ thì các bạn vào trình duyệt chạy đường dẫn sau:

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

các bạn sẽ thấy dữ liệu trả về dưới dạng json như sau :

Gợi ý : Bạn là người mới và muốn tìm hiểu về Bitcoin nhưng không biết bắt đầu từ đâu? Click xem ngay Hướng Dẫn Đầu Tư Bitcoin Cho Người Mới nhé!

[{"id":1,"name":"Hieu","author":"Name","created_at":"2015-03-07 10:12:51","updated_at":"2015-03-07 10:12:51"},{"id":2,"name":"Teo","author":"bli bli bli","created_at":"2015-03-07 10:30:45","updated_at":"2015-03-07 10:30:45"}]

Bây giờ mình sẽ sửa lại function index() một chút để gọi view articles, và truyền dữ liệu $articles như sau:

<?php namespace App\Http\Controllers;

use App\Articles;
use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class ArticlesController extends Controller {

	//
	public function index(){
		// echo "string";
		$articles = Articles::all();

		return view("articles")->with("articles", $articles);
	}
}

3. Tạo view

Sau khi đã tạo controller, tiếp đến mình sẽ tạo một view mới articles.blade.php, file này sẽ lấy dữ liệu $articles được truyền ra từ controller ArticlesController.php và hiển thị danh sách bài viết article.

<html>
<head>
	<title>View articles</title>
</head>
<body>
	<ul>
	@foreach($articles as $article)
		<li>Name : {{$article->name}} | Author : {{$article->author}}</li>
	@endforeach
	</ul>
</body>
</html>

Ở đoạn code trên, vòng lặp foreach sẽ duyệt danh sách bài viết được chứa trong biến $articles và gọi ra từng bài viết $article, mỗi bài viết chúng ta sẽ hiển thị dữ liệu ra ngoài là name, author có trong db.

Lưu lại file view trên và chạy lại đường dẫn

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

bạn sẽ thấy kết quả hiển thị như sau :

Name : Hieu | Author : Name
Name : Teo | Author : bli bli bli

Tổng kết : như vậy là các bạn đã biết cách dữ liệu được truyền đi theo mô hình MVC trong Laravel 5 như thế nào rồi phải không nào ? Bài viết của mình nêu lên một cách tổng quát để các bạn hiểu được nền tảng mô hình MVC trong Laravel 5, từ đó các bạn có thể mở rộng ra tùy thuộc theo yêu cầu thực tế của dự án. Chúc các bạn học tốt.

Gợi ý xem : Tặng coupon giảm giá 40% khóa học Laravel

Nguồn : kungfuphp

Hiếu

"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

23 Bình Luận
Inline Feedbacks
Xem Tất Cả Bình Luận
Trọng Xoay
7 năm trước

@foreach @endforeach và là 1 hã bạn

Trọng Xoay
Phản hồi đến  Trọng Xoay
7 năm trước

và php foreach… viết nhưng nó ko hiện

Thai Nguyen Van
Thai Nguyen Van
7 năm trước

Thanks for support

Huỳnh Kha
Huỳnh Kha
8 năm trước

A ơi trong resources có tạo thư mục tên images chứa hình ảnh, trong csdl e có trường lưu tên hình ảnh.
Trong views e tạo thư mục sanpham chứa file sanpham.blade.php mà khi e truy xuất hình ảnh ra tag
lại không hiển thị được hình đó, tất cả các tên hình trên csdl đều có trong thư mục images, e chạy trên localhost:8000/sanpham. A giúp e với, e đang ngiên cứu để làm Đồ án tốt ngiệp ạ

hoha
hoha
8 năm trước

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.
Apache/2.4.16 (Ubuntu) Server at localhost Port 80

mình đánh vào đường dẫn http://localhost/laravel-5/public/articles thì bị lỗi trên mình đang sử dụng ubuntu

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