BASIC TO ADVANCE

Bài 6: View Trong Laravel

Ở các bài trước mọi người đã được tìm hiểu về Cấu trúc cũng như là route trong Laravel rồi đúng không? Thì tiếp đến phần này mình sẽ giới thiệu về view Một thành phần khá là quan trọng trong mô hình MVC framework.

1,Tạo view trong Laravel.

-View Trong Laravel thì bắt buộc phải được nằm trong thư mục resources/views và phải có đuôi là .php hoặc .blade.php (Nếu như bạn muốn sử dụng blade template).  Còn việc tạo 2 file này như thế nào thì chắc hẳn các bạn cũng viết rồi.

-Trong view thì các bạn có thể sử dụng tất cả các ngôn ngữ trong file PHP hỗ trợ như: HTML,CSS,JS,.. VD: Mình sẽ tạo một view có tên hello.php và một view toidicode.blade.php vào trong thư mục resources/views. File hello.php có nội dung:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>hello cac ban</title>
    <link rel="stylesheet" href="">
</head>
<body>
    hello cac ban!
</body>
</html>

Và trong toidicode.blade.php có nội dung:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>hello cac ban</title>
    <link rel="stylesheet" href="">
</head>
<body>
    {{ 'toidicode.com' }} hello cac ban!
</body>
</html>

-Như ở trên các bạn thấy trong file toidicode.blade.php có sử dụng đoạn {{ 'toidicode.com'}} đây là đoạn code xử lý của blade template. Và đó cũng là lý do mình khuyên các bạn nên sử dụng phần view mở rộng của laraver.

Chú Ý: Khi sử dụng kết hợp với angularjs thì không được dùng blade template.

-Tạo thư mục cho view:

+Để tạo các thư mục con cho view thì các bạn chỉ cần tạo một thư mục nữa trong resources/views thì larver cũng chấp nhận đó là view(Cứ nằm trong thư mục resources/views là được).

VD: Trong thư mục Resources/views mình sẽ tạo thêm một thư mục admin , và trong thư mục admin mình tạo thêm một view có tên là login.blade.php có nội dung như sau:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Login</title>
    <link rel="stylesheet" href="">
</head>
<body>
    Đây là trang login
</body>
</html>

-như thế là chúng ta đã tạo được view rồi đúng không.

2,Gọi view trong Laravel.

-Ở phần  1 chúng ta đã tạo được view ở trong laravel rồi đúng không. Giờ chúng ta sẽ tiến hành triệu tập view trong Laravel nhé. Cú pháp:

view('duongdantoiview', 'dulieucantruyenvaoview');

Chú thích:

  • duongdantoiview: Là đường dẫn tới file view lấy từ thư mục resources/views . VD như mình muốn gọi file view hello ở vd trên: view('hello'). Gọi view login trong thư mục admin view('admin.login')
  • dulieutruyenvaoview: là dữ liệu mà các bạn muốn truyền vào view(nếu không có thì bỏ qua).

-Gọi view trong route:

-Cú Pháp:

Route::get('duogndanroute', function () {
    return view('tenview', 'dataneuco');
});

VD: mình sẽ tạo 1 route rồi gọi một view và truyền luôn tham số vào bên trong cho view.

  • Route:
Route::get('chao/{user}', function ($user) {
    return view('hello-user', ['user' => $user]);
});
  • View: hello-user.php:
<?php 
    echo $user;
 ?>

Nếu view của bạn sử dụng blade template thì sẽ có tên: hello-user.blade.php Và có nội dung như sau

{{ $user }}

=>Mình sẽ nói chi tiết về blade template ở bài sau.

-Gọi view trong controller:

-Cú pháp:

public function index()
{
    return view('view', 'dataneuco');
}

-Cũng Tương tự như gọi view trong route các bạn thực hành tương tự lại VD trên nhé!

3,Tạo View dùng chung.

-Đôi khi, bạn cần chia sẻ một thông tin cho tất cả các view sẽ hiển thị trên ứng dụng, ví dụ: hiển thị thông tin thành viên đã đăng nhập lên thanh trạng thái của các trang trong ứng dụng chẳng hạn.Chẳng lẽ cứ phải  lặp đi lặp lại việc insert data trong hàm view().

-Thay vào đó,Laravel có hỗ trợ cho chúng ta chia sẻ view cho toàn ứng dụng với  hàm share().Để sử dụng các bạn chỉ cần thêm nó vào trong hàm boot trong file app/Providers/AppServiceProvider.php.

VD:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        View::share('key', 'value');
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

4,Các các truyền dữ liệu cho view.

Dùng compact().

Cú Pháp:

compact('tencuabientruyenvao')

VD:

Route::get('chao/{user}', function ($user) {
    return view('hello-user', compact('user'));
});
// view muon hien thi thi goi bien $user

Dùng with().

Cú Pháp:

view('tenview')->with('key', 'value');

VD:

Route::get('chao/{user}', function ($user) {
    return view('hello-user')->with('user', $user);
});

//de hien thi trong view goi bien $user

Dùng Mảng.

Cú pháp:

view('tenview', ['key' => 'value']);

VD:

Route::get('chao/{user}', function ($user) {
    return view('hello-user', ['user' => $user]);
});

5,Lời Kết.

-Qua bài này mình đã giới thiệu cho các bạn về view trong laravel rôi, còn một số phần như view::composer nếu các bạn cần thì mình sẽ viết thêm nhé!Bài sau mình sẽ tìm hiểu về blade template trong laravel.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

5 Comments

cho mình hỏi chút là nên dùng loại nào thì tốt vậy có tận 3 cách liền, bình thường thì mình vẫn hay dùng linh tinh các kiểu lúc dùng compact lúc thì dùng mảng, vậy trường hợp nào nên dùng mảng và trường hợp nào nên dùng compact

hùng

3 năm trước

Chào bạn,

Bản thân hàm compact() nó có tác dụng build các biến thành mảng thôi!.
VD:

$name = 'Vu Thanh Tai';
$age = 22;

result =  compact(['name', 'age']);

//result
[
    'name' => 'Vu Thanh Tai',
    'age'    => 22;
]

Vũ Thanh Tài

3 năm trước

Thực ra 2 cách bạn dùng nó vẫn là 1 thôi.

Thai Nguyen

2 tháng trước

Sao document của phiên bản 5.8 không thấy có nói về compact() nhỉ,

Thành

1 năm trước

Compact là hàm của php bạn ạ không phải helper của Laravel nhé bạn!

Bạn tham khảo: https://www.php.net/manual/en/function.compact.php

Vũ Thanh Tài

1 năm trước

Bình luận

Captcha