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
@foreach @endforeach và là 1 hã bạn
và php foreach… viết nhưng nó ko hiện
Thanks for support
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 ạ
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
Nếu em muốn lấy ra một dòng dữ liệu thì sao anh
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
bạn kiểm tra lại file cấu hình kết nối đến DB ở bài này nhé : https://kungfuphp.com/laravel-framework-5/migrations-trong-laravel-5.html
sạdgajshdgajsdgajsdgasdja
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
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
ko có chi e, blog sẽ cho ra nhiều bài viết hơn nữa, chúc e học tốt ha 🙂
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ó ^^
yep, đã sừa ^^, thank nhìu nhé :p
e toàn đánh Aritcles giống a
:p . Kì lạ thiệt, cứ bị quen tay
Thiếu dấu ; nha anh kungfu ^^
^^
use App\Aritcles;
đã sửa lun , đánh máy vội quá :p
Hình như Kungfu thiếu dấu : ở all(); ^^
public function index(){
$articles = Articles:all();
}
đã sửa nhé, thank ^_^
^_^
Mnh da theo doi~ cac bai viet ve Laravel 5 cua ban, cam on kungfuphp nhieu lam
hay , tks nhe