Đào tạo Tin học Trực tuyến

Tìm hiểu về View trong Laravel


Cập nhật: 8 tháng trước
Bài viết ngẫu nhiên:

   Tìm hiểu về Controller trong Laravel

   XD phần mềm Quản lý điểm: Bài 9. Xây dựng Class XuLy và đưa dữ liệu sinh viên vào Bảng điểm Chi tiết

   Lập trình JavaScript: Hướng dẫn thiết lập và xây dựng một số ứng dụng cơ bản

   Bài giảng jQuery: Xây dựng DIV quảng cáo ở dưới cuối trang với jQuery và W3.CSS

   Cài đặt và Cấu hình Laragon - Server ảo chuyên nghiệp cho PHP và MySql

   XD phần mềm Quản lý điểm: Bài 5. Xử lý dữ liệu Bảng Môn học phần và Cập nhật dữ liệu vào Bảng Điểm học phần


Trong bài này chúng ta sẽ tìm hiểu đến View, một thành phần giữ vai trò quan trọng trong mô hình MVC của Laravel. Nhiệm vụ của View là nhận dữ liệu từ Controller và sau đó dựa vào layout của giao diện nó sẽ xử lý dữ liệu theo yêu cầu.

Tạo Views

Views chứa nội dung HTML phục vụ cho ứng dụng của bạn và tách riêng ra controller / ứng dụng. Views chứa tại thư mục resources/views. Ví dụ đơn giản của view nhìn giống như sau:

<html>
    <body>
        <h1>Hello, {{ $name }}</h1>
    </body>
</html>

Nội dung view này lưu tại resources/views/greeting.blade.php, chúng ta sẽ trả dữ liệu về hàm viewnhư sau:

Route::get('/', function () {
    return view('greeting', ['name' => 'James']);
});

Như bạn có thể thấy, tham số đầu tiên của hàm view tương ứng với tên tệp tin trong thư mục resources/views. Tham số thứ hai là một mảng dữ liệu cần dùng cho view. Trong trường hợp này, chúng ta truyền biến name, khi nó hiển thị ở view, sử dụng cú pháp Blade syntax.

Tất nhiên, các view có thể nằm trong thư mục con của thư mục resources/views. "Dấu chấm" sẽ ngăn cách các thư mục con. Ví dụ, Nếu view của bạn lưu trong thư mục resources/views/admin/profile.blade.php, thì khi đó nó sẽ như sau:

return view('admin.profile', $data);

Kiểm tra tồn tại view

Nếu bạn cần kiểm tra view có tồn tại hay không, bạn có thể dùng View facade. Phương thức existssẽ trả về true nếu view tồn tại:

use Illuminate\Support\Facades\View;

if (View::exists('emails.customer')) {
    //
}

Truyền dữ liệu vào view

Như bạn nhìn thấy ở ví dụ trước, bạn có thể truyền một mảng của dữ liệu vào view:

return view('greetings', ['name' => 'Victoria']);

Khi bạn truyền dữ liệu theo cách này, $datanên là một cặp key/value. Bên trong view, bạn có thể lấy giá trị bằng cách sử dụng key, như <?php echo $key; ?>. Bạn cũng có thể để truyền dữ liệu vào view view, bạn có thể dùng phương thức with như bên dưới:

return view('greeting')->with('name', 'Victoria');

Chia sẻ dữ liệu cho tất cả views

Thỉnh thoảng, bạn cần chia sẻ một phẩn dữ liệu với tất cả các views trong ứng dụng của bạn. Bạn có thể sử dụng phương thức share của facade. Thông thương, bạn chỉ cần họi phương thức sharetrong phương thức boot của service provider. Bạn có thể thoải mái thêm vào trong AppServiceProvider hoặc tự tạo ra một service provider khác:

<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::share('key', 'value');
    }

    public function register()
    {
        //
    }
}

View Composers

View composers là callbacks hoặc class phương thức nó được gọi khi một view được render. Nếu bạn có dữ liệu và bạn muốn ràng buộc chúng với một view tại thời điểm view được render, một view composer có thể giúp bạn tổ chức các logic bên trongview đó.

Đối với ví dụ bên dưới, chúng ta đăng ký một view composers trong service provider. Chúng ta sẽ sử dụng View facade để truy cập vào thể hiện Illuminate\Contracts\View\Factory. Ghi nhớ, Laravel không có thư mục mặc định cho view composers. Chúng ta có thể tự do tổ chức theo ý chúng ta muốn. Ví dụ, bạn có thể tạo một thư mục App\Http\ViewComposers:

<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::composer(
            'profile', 'App\Http\ViewComposers\ProfileComposer'
        );
       
        View::composer('dashboard', function ($view) {
            //
        });
    }

    public function register()
    {
        //
    }
}

Chú ý, nếu bạn tạo mới một service provider chứa những view composer, bạn sẽ cần phải thêm service provider vào trong mảng providers trong file cấu hình config/app.php.

Bây giờ bạn đã đăng ký với composer, phương thức ProfileComposer@compose sẽ thực thi mỗi lần profile view được render. Vì vậy, Hãy định nghĩa một class composer:

<?php

namespace App\Http\ViewComposers;
use Illuminate\View\View;
use App\Repositories\UserRepository;

class ProfileComposer
{
    protected $users;
    public function __construct(UserRepository $users)
    {
        $this->users = $users;
    }

    public function compose(View $view)
    {
        $view->with('count', $this->users->count());
    }
}

Trước khi view được render, phương thức compose của composer được gọi với thể hiện Illuminate\View\View. Bạn có thể sử dụng phương thức with để ràng buộc dữ liệu vào view.

Đính kèm Composer vào nhiều views

Bạn có thể gán một view composer vào nhiều views bằng cách truyền một mảng của các view như là tham số thứ nhất của phương thức composer:

View::composer(
    ['profile', 'dashboard'],
    'App\Http\ViewComposers\MyViewComposer'
);

Phương thức composer ngoài ra còn chấp nhận ký tự * như một ký tự đại diện, cho phép bạn gán một composer vào tất cả các views:

View::composer('*', function ($view) {
    //
});

View Creators

View creators rất giống với view composer; tuy nhiên, chúng sẽ tác động trực tiếp vào các view thay vì chờ các view cho tới khi chúng được render. Để đăng ký một view creator, sử dụng phương thức creator:

View::creator('profile', 'App\Http\ViewCreators\ProfileCreator');

Nguồn: https://laravel.com

Xem thêm

   Bạn sẽ chọn ngành nào phù hợp với lĩnh vực Công nghệ Thông tin?

   Bạn hiểu thế nào là nghề lập trình? để bước vào nghề lập trình thì phải học những gì?

   Lập trình máy tính là gì? Các ngôn ngữ lập trình, phát triển phần mềm

   Tại sao bạn phải hiểu và có kỹ năng về lập trình hướng đối tượng?

   Xử lý hình ảnh (images) với Bootstrap CSS FrameWork phiên bản 4.x

   Để học lập trình bạn nên lựa chọn ngôn ngữ lập trình nào?

   Top 25 bài giảng có số lượt xem cao nhất thời điểm hiện tại

   Có gì khác biệt giữa HTML và HTML5?

   5 yếu tố quan trọng của định hướng thị giác trong thiết kế web

   Một số thẻ và Type quan trọng với HTML5 cần chú ý trong quá trình thiết kế website

   Xử lý text với Typography trong Bootstrap 4 CSS FrameWork

   Bootstrap 4.0: Bài 2. Thiết lập hệ thống lưới Grid System

   Bootstrap 4.0: Bài 1. Giới thiệu và các thiết lập cơ bản về công cụ, css, javascript

Xem nhiều nhất

   Giáo trình hướng dẫn Microsoft PowerPoint 2016 từ cơ bản đến nâng cao

   Hệ thống bài giảng e-Learning lớp Ứng dụng CNTT và các phần mềm vào đổi mới phương pháp dạy và học

   Thực hành biên tập, thiết kế, chỉnh sửa Videos bằng Adobe Premiere

   Hướng dẫn sử dụng phần mềm bảng tương tác thông minh ActivInspire

   Thiết lập hiệu ứng trống đồng quay trong Microsoft PowerPoint

   Xây dựng Website tin tức bằng PHP và MySql theo phương pháp lập trình hướng đối tượng (mysqli Object Oriented)

   Thiết kế trò chơi ô chữ trong powerpoint (download miễn phí)

   Trọn bộ Giáo trình Microsoft Word 2016 từ cơ bản đến nâng cao

   Thực hành sử dụng phần mềm thiết kế đồ họa Adobe Illustrator

   Cài đặt và sử dụng tính năng mới của Office 365 trên Office 2016

   Tạo câu hỏi trắc nghiệm với siêu liên kết (hyperlink) và Trigger với PowerPoint 2016

   Hướng dẫn thu âm, chỉnh sửa âm thanh, tăng giảm tone nhạc bằng phần mềm Adobe Audition CC

   Bài giảng Microsoft PowerPoint 2013 và 2016 từ cơ bản đến nâng cao

   Dòng chữ chạy liên tục từ trái qua phải và đồng hồ đếm ngược trong PowerPoint

   Thực hành sử dụng phần mềm thiết kế đồ họa Corel Draw

   Full Download phần mềm biên soạn bài giảng e-Learning iSpring Sute phiên bản 8.1