học laravel 5

Bài 7 : Mô hình MVC trong 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

Có ích

học laravel 5

Bài 8 : Form trong Laravel 5

Ở bài trước, mình đã hướng dẫn cho các bạn về mô hình MVC trong …

23 bình luận

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

  2. Thanks for support

  3. 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 ạ

  4. 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

  5. Nếu em muốn lấy ra một dòng dữ liệu thì sao anh

  6. PDOException in Connector.php line 49:
    SQLSTATE[HY000] [1045] Access denied for user ‘homestead’@’localhost’ (using password: YES)
    sao bên em nó lại báo lỗi như vầy

  7. của mình phần return trong controller mà khồng viết rõ là return view(‘page\articles’) thì sẽ k chạy đc :)) chắc là do hệ điều hành :v

  8. Sáng z zô xem thấy anh KungFu đã fix hihi ^^
    Cảm ơn kiến thức mà các anh đã chia sẽ, mong sau những bài học basic này sẽ có nhiều bài viết HOT hơn hihi.
    Ví dụ những ứng dụng trong Laravel ấy ^^ hihi

  9. class trong Controller vừa thiếu dấu ;
    vừa viết sai tên Model ^^
    Articles chứ không phải Aritcles anh Kungfu ơi ^^ sửa lại hông mấy ẽm làm bị khó ^^

  10. Thiếu dấu ; nha anh kungfu ^^
    ^^
    use App\Aritcles;

  11. Hình như Kungfu thiếu dấu : ở all(); ^^

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

  12. Mnh da theo doi~ cac bai viet ve Laravel 5 cua ban, cam on kungfuphp nhieu lam

Trả lời Thai Nguyen Van Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *