học laravel 5

Bài 4 : Laravel 5 : Đưa dữ liệu ra view

Ở bài trước, chúng ta đã biết được cách 1 controller gọi chỉ định 1 view để hiển thị dữ liệu, vậy thì khi controller muốn đưa dữ liệu ra view trong Laravel 5  thì phải làm thế nào ? Bài viết hôm nay sẽ giải đáp cho các bạn điều đó.

Đưa dữ liệu ra view trong Laravel 5

a. Tạo PagesController.php

Đầu tiên mình sẽ tạo 1 controller mới đặt tên là PagesController.php trong thư mục Controllers của Laravel. Bạn có thể tạo file 1 cách thủ công, nhưng ở phạm vị bài viết này, mình sẽ tận dụng php artisan của Laravel 5 để tạo PagesController.php, và mình cũng khuyên các bạn nên học cách sử dụng php artisan nếu có thể để giúp phát triển ứng dụng nhanh hơn.

Để tạo PagesController.php mình sẽ làm như sau. Mở cmd (Ấn phím window , trong mục Search programs and filescmd, rồi enter), gõ dòng lệnh sau để di chuyển đến thư mục chưa laravel 5 của chúng ta

cd C:/wamp/www/laravel-5

tiếp đến gõ lệnh dưới đây để laravel tự động generate ra file PagesController.php

php artisan make:controller PagesController

sau khi chạy lệnh trên, vào thư mục Controllers bạn sẽ thấy file PagesController.php đã được tạo tự động với các hàm default như sau :

<?php namespace App\Http\Controllers;

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

use Illuminate\Http\Request;

class PagesController extends Controller {

	/**
	 * Display a listing of the resource.
	 *
	 * @return Response
	 */
	public function index()
	{
		//
	}

	/**
	 * Show the form for creating a new resource.
	 *
	 * @return Response
	 */
	public function create()
	{
		//
	}

	/**
	 * Store a newly created resource in storage.
	 *
	 * @return Response
	 */
	public function store()
	{
		//
	}

	/**
	 * Display the specified resource.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function show($id)
	{
		//
	}

	/**
	 * Show the form for editing the specified resource.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function edit($id)
	{
		//
	}

	/**
	 * Update the specified resource in storage.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function update($id)
	{
		//
	}

	/**
	 * Remove the specified resource from storage.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function destroy($id)
	{
		//
	}

}

nếu như bạn cảm thấy rằng, bạn không cần dùng tới quá nhiều hàm default như vậy, mà chỉ cần tạo ra file PagesController.php trắng, thì thay đổi lại lệnh trên (thêm –plain ) như sau:

php artisan make:controller PagesController --plain

thì bạn sẽ được 1 file PagesController.php mới gọn gàng như thế này :

<?php namespace App\Http\Controllers;

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

use Illuminate\Http\Request;

class PagesController extends Controller {

	//

}

Tiếp theo, mình thêm function aboutme() vào class PagesController vừa tạo để gọi view aboutme được đặt trong folder pages

<?php namespace App\Http\Controllers;

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

use Illuminate\Http\Request;

class PagesController extends Controller {

	public function aboutme(){
		return view("pages.aboutme");
	}

}

b. Tạo routes

Trong file routes.php, bạn tạo 1 đoạn routes mới như sau để sử dụng PagesController ở trên

Route::get('/aboutme', 'PagesController@aboutme');

c.Tạo views aboutme.blade.php

Trong folder pages ở thư mục views (xem lại bài trước), mình sẽ tạo 1 file view mới đặt tên là aboutme.blade.php . Bạn sẽ thắc mắc tại sao không phải là aboutme.php mà lại là aboutme.blade.php thì mình xin thưa là aboutme.php hay aboutme.blade.php đều được, nhưng thêm blade nghĩa là bạn đang dùng template cho view , về phần này mình sẽ nói kĩ hơn trong bài viết sau này. Giờ thì các bạn hãy tạm chấp nhận vậy nhé 🙂

Gợi ý xem : Khóa học tạo website với Laravel 5 tặng mã giảm giá 40% + Hỗ trợ việc làm sau khi học xong

Tiếp tục, thông tin trong file aboutme.blade.php của mình sẽ như sau :

<html>
<head>
	<meta charset="UTF-8">
	<title>About me</title>

</head>
<body>
	<h1>About me</h3>
	<p>I'm Hieu, I'm PHP Developer, I love you ^_^</p>
</body>
</html>

Vào trình duyệt, gõ địa chỉ

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

bạn sẽ được kết quả 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é!

laravel-5-aboutme
kết quả chạy view aboutme.blade.php

 4. Gửi dữ liệu ra view

Đây chỉnh là phần quan trọng chính trong bài viết ngày hôm nay. Nhìn lại 1 chút ở ví dụ trên, bạn sẽ thấy mình đơn giản chỉ là từ PagesController chúng ta gọi view about me, vậy thì nếu từ trong PagesController ta có dữ liệu nào đó và muốn gửi ra ngoài view thì phải làm thế nào ?

Dưới đây mình sẽ chỉ ra 1 số cách giúp bạn đưa dữ liệu ra ngoài view từ controller.

Cách 1 : Đưa dữ liệu đơn ra ngoài view với phương thức with

Sửa lại function aboutme() trong controller 1 chút như sau :

	public function aboutme(){
		$data= 'My name is Hieu';
		return view("pages.aboutme")->with('name',$data);
	}

Ở đoạn code trên, với phương thức with bạn đã gửi dữ liệu với key là name và value là $data ra ngoài view. Tiếp đến chúng ta sẽ sửa lại file aboutme.blade.php như sau để bắt lấy dữ liệu gửi ra từ controller như sau :

<html>
<head>
	<meta charset="UTF-8">
	<title>About me</title>

</head>
<body>
	<h1>About me {{ $name }}</h3>
	<p>I'm Hieu, I'm PHP Developer, I love you ^_^</p>
</body>
</html>

F5 lại trình duyệt bạn sẽ được kết quả như sau :

laravel-5-aboutme-1
gửi dữ liệu đơn ra view với with

Awesome !  thật tuyệt vời phải ko nào ? Laravel đã tự động parse key là name thành biến $name khi ra ngoài view, và với cách viết {{ $name }}, Laravel đã echo dữ liệu “My name is Hieu” ra ngoài trình duyệt cho bạn, thay vì bạn phải viết như thế này <?php echo $name ?>. Đó chưa phải là toàn bộ công dụng của dấu {{ }} thần thánh này đâu, bạn sẽ hiểu nhiều hơn về công dụng tuyệt với của nó khi bạn có cơ hội gặp phải sau này 🙂

Cách 2 : Đưa nhiều dữ liệu ra ngoài view với phương thức with

Sửa lại function aboutme() trong PagesController.php 1 tí như sau :

public function aboutme(){
	$name = 'My name is Hieu';
	$age = '24';
	return view("pages.aboutme")->with([
		'name' => $name,
		'age' => $age
	]);
}

Sửa lại file aboutme.blade.php như sau :

<html>
<head>
	<meta charset="UTF-8">
	<title>About me</title>

</head>
<body>
	<h1>About me {{ $name }} {{ $age }}</h3>
	<p>I'm Hieu, I'm PHP Developer, I love you ^_^</p>
</body>
</html>

F5 lại trình duyệt và xem kết quả nhé 🙂

Cách 3 : Gửi dữ liệu ra ngoài view không dùng từ khóa with

Sửa function aboutme() thành như sau :

public function aboutme(){
	$name = 'My name is Hieu';
	$age = '24';
	$data = [];
	$data['name'] = $name;
	$data['age'] = $age;
	return view("pages.aboutme",$data);
}

Giữ nguyên file aboutme.blade.php, không chỉnh sửa gì thêm và F5 lại trình duyệt, xem kết quả nhé.

Kết thúc bài viết đưa dữ liệu ra view trong Laravel 5. Bạn thấy đó, Laravel thật tuyệt vời phải không nào? chi riêng cái việc gửi dữ liệu ra ngoài view và cách view hiển thị dữ liệu thôi mà bạn đã thấy laravel cũng cấp cho bạn đầy đủ tùy chọn “màu mè hoa lá cành” đến mức nào. Mình dừng bài viết ở đây, chúc các bạn học tốt. Nếu có bất kỳ thắc mắc hay góp ý thì để lại comment bên dưới nhé, Thân !

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

Có ích

Ton Raffles Là Gì? Hướng Dẫn Sử Dụng Ton Raffles Chi Tiết

Ton Raffles theo Hiếu là một hidden gem, một viên ngọc ẩn của hệ TON, …

38 bình luận

  1. Anh ơi, giờ cái chỗ Routes ý thì không là Route::get(‘/aboutme’, ‘PagesController@aboutme’); sao ý anh
    Em phải để là
    Route::get(‘/aboutme’,function(){
    return view(‘aboutme’);
    });
    Trong Routes/web.php thì mới được, Vậy có cách nào nhanh hơn không anh

  2. Nếu a làm 1 seri video project về lrv5 để mọi người rõ hơi về 1 roject hoàn chỉnh thì thật hoàn hảo :).

    Thanks a!

  3. Mình rất khâm phục những người đi chia sẻ kiến thức như bạn. Cảm ơn bạn rất nhiều.

  4. public function aboutme(){
    return view(“aboutme”);
    }
    Bạn ơi update cái này nhé mình dùng aboutme.blade mà

  5. Sao mình làm ở bước tạo controller mà nó không sinh ra các function mặc định nhỉ, mặc dù mình không gõ thêm -plain phía sau

  6. Rất cảm ơn bạn về những bài viết.
    Cho minh hỏi chút. Minh thưc hiện các bước cài đặt như bạn hướng dẫn khi mở các Route, Controller.. không thấy hiển thị đầy đủ các Route, Controller, vidu:
    Route::get(‘/’, ‘WelcomeController@index’); hay cac phuong thưc trong Controller khi tạo Controller trong artisan:
    public function index()
    {
    //
    }…

  7. Cho mình hỏi? Nếu mình sử dụng css, mình thấy khi tạo project đã có sẵn 1 folder (\vendor\phpunit\php-code-coverage\src\CodeCoverage\Report\HTML\Renderer\Template) chứa css, trong file master mình khai báo đường dẫn ntn?

    Chỉ cho mình với.!

  8. (help)Sao mình làm Router rồi, Tạo PagesController, tạo view aboutme.blade.php rồi mà khi gõ http://localhost/laravel5/public/aboutme lại thông báo The requested URL /laravel5/public/aboutme was not found on this server.

  9. Sao của mình chổ {{ $name }} nó không ra kết quả nhỉ, chỉ hiên {{ $name }} thôi

  10. Mình mong bạn sẽ ra nhìu bài học nữa…cảm ơn bạn đã cung cấp tài liệu hay cho mọi người!

  11. Bạn cho mình hỏi, Nếu trong controller mình lấy dữ liệu từ 1 bảng có khoảng 10 cột thì mình đưa ra view như thế nào ạ?
    Ví dụ: ở trang view là một trang chứa nhiều sản phẩm gồm (tên, thông tin, giá bán, v.v…), mình muốn dùng controller để lấy dữ liệu và đưa ra view, ở view mình dùng câu lệnh for để hiển thị sản phẩm cho tiện hơn.
    Cảm ơn bạn!

  12. anh ơi cho em hỏi sau khi làm xong hết rồi mà gõ ” php artisan serve “nó báo k thể mở artisan là sao vậy anh? 😀

  13. Chào bạn, bạn hướng dẫn cách dùng chung một default template với? Ví dụ như chẳng lẽ cứ page nào cũng phải copy paste cái header, footer, title site vào hết sao, mình nghĩ chắc có cách nào đó giống các framework khác, cảm ơn bạn nhiều về bài viết hữu ích. 🙂

  14. Cố gắng tiếp tục bạn nhé. Mình cũng đang tìm hiểu. Xem mấy clip trên laracasts bằng tiếng Anh nên cũng không hiểu mấy. Cám ơn bạn đã chia sẻ!

  15. Chào a,
    A biết dễ hiểu quá.
    Hi vọng e sẽ sớm ra nhiều bài hay như này nũa. :))

  16. Chào bạn, cho mình hỏi sao mình chạy php artisan giống như bạn không được vậy, báo lỗi là Could not open input file: artisan

    • Bởi vì nó hệ thống laravel của bạn ko biết file artisan ở đâu.
      SAu khi đã tạo xong project laravel (ở đây laravel-5), bạn dùng cmd, cd laravel-5 để di chuyển vào thư mục laravel-5, sau đó thực thi php artisan mới được nhé

  17. Hi bạn,các bài hướng dẫn khá bổ ích.Mình hỏi chút là dùng IDE j để code với Laravel thì hợp lí nhỉ,kiểu như nhiều lúc mình code sai nó báo lỗi giùm mình đó.Mình dùng DreamWear,code đúng như bạn,nhưng ide cứ hiển thị lỗi mặc dù vẫn chạy đúng 😀

  18. Em hảo hứng search top framework php được laravel xếp top lao vào cầy cuốc và nhận ra bản 5. đã thay đổi cấu trúc thư mục với bản 4. mà trên mạng toàn toturial bản 4. . Tưởng trừng dừng cuộc chơi may quá Thank anh nhé

Trả lời Hiếu 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 *