Bài 4. View trong Laravel 5

Bài trước mình đã giới thiệu về Route trong Laravel 5. Bài hôm nay chúng ta sẽ đi tổng quan về View và cách sử dụng view trong Laravel 5.

Mục Lục:

1. Tạo file view và tạo sub-view trong Laravel

Trong Laravel 5, tất cả các file view sẽ được đặt trong thư mục resources/views với đuôi là .php hoặc .blade.php(Khuyên dùng). Ví dụ ta tạo file demo1.phpdemo2.blade.php thì ta sẽ được 2 view là demo1 và demo2

Nội dung trong file view thì có thể là bất cứ gì như code javascript, jquery, html, css, php, ...

Cấu trúc: tên view - phần mở rộng

Tạo sub-view trong Laravel

Khá đơn giàn, trong thư mục resources/views bạn tạo thêm thư mục con trong đó. Ví dụ: tạo sub-view category ta tạo thư mục cate trong thư muc cha resources/views trong thư mục cate ta tạo tiếp 3 file list.blade.php insert.blade.php update.blade.php

Vậy là đã có sub-view rồi.

2. Gọi view trong Laravel

Cú pháp:

        View::make($nameView, array(), array());
    
  • Tham số thứ nhất là tên view. Nếu là sub-view thì thêm dấu '.'. Ví dụ gọi list.blade.php như ví dụ mục 1 thì $nameView sẽ là cate.list.
  • Tham số thứ 2 là mảng dữ liệu sẽ được truyền cho view.
  • Tham số thứ 3 là mảng dữ liệu sẽ được merge với $data bằng hàm array_merge.
  • $nameView là tham số bắt buộc, còn 2 tham số còn lại tùy chọn.

3. Truyền dữ liệu qua view

Ở đây mình thống kê các cách mình hay dùng:

Ví dụ: Ta có route như sau:

        Route::get('demo', ['as' => 'demo', 'uses' => 'DemoController@demo
        ']);
    

Như ở bài giới thiệu về Route mình đã hướng dẫn thì ý nghĩa của route này là nhận request của method get của url ../demo chuyển về controller DemoController gọi function demo xử lý.

Trong function demo ta sẽ truyền biến có tên name qua view demo. Code DemoController:

        namespace App\Http\Controllers;
        use Illuminate\Support\Facades\View;

        class DemoController extends Controller
        {
            public function demo()
            {
                return View::make('demo', ['name' => 'Tôi là Lê Đức Trung']);
            }
        }
    

Khởi tạo view demo: tạo file demo.blade.php trong thư mục resources/views với nội dung:

    

{{ $name }}

Trời hôm nay thật đẹp

Truy cập vào URL: http://localhost/blog/public/demo. Bạn nhận được kết quả như sau:

Sử dụng with()

Cú pháp:

        View::make($view)->with($key,$value);
    

Trong đó:

  • $view: tên view được gọi.
  • $key (string hoặc array): nếu là chuỗi thì $key sẽ đóng vai trò là biến dùng để sử dụng trong view nếu là mảng thì mỗi khóa của mảng sẽ là 1 biến trong view.
  • $view (string): nếu $key là chuỗi thì $value chính là giá trị của $key trong view, ngược lại thì $value không có giá trị trong view.

Ví dụ:

Khi $key là mảng:

function demo

    return View::make('demo')->with(['email'=>'support@laedaily.com','name'=>'admin']);

gọi biến trong file demo.blade.php

    

{{ $email }}

{{ $name }}

Load lại trang ta được kết quả:

Khi $key là chuỗi:

function demo

    return View::make('demo')->with(['name'=>'admin']);

gọi biến trong file demo.blade.php

    

{{ $name }}

Load lại trang ta được kết quả:

Sử dụng magic method

Cú pháp:

    View::make($view)->withName($value);

Trong đó:

  • $view: tên view được gọi.
  • withName:
    • with sẽ là bắt buộc có và viết hường.
    • Name ở đây là tên biến sẽ gọi trong view và chữ cái đầu tiên viết in hoa và các chữ cái còn lại viết thường.
  • $value: giá trị của biến của $name.

Ví dụ: sử dụng lại ví dụ with() với $key là chuỗi ta thay code trong DemoController thành:

    return View::make('demo')->withName('admin');

Bạn cũng sẽ nhận được kết quả tương tự.

Sử dụng compact()

Cú pháp:

         return View::make($view, compact($key));
    

Trong đó:

  • $view tên view được gọi.
  • $key tên biến.

Ví dụ:

function demo

        $name = 'Hello Admin';
        return View::make('demo', compact('name'));
    

gọi biến trong file demo.blade.php

    

{{ $name }}

Bạn cũng sẽ nhận được kết quả tương tự.

Trong bài này mình đã giới thiệu về View trong Laravel 5. Trong series bài viết tiếp theo mình sẽ hướng dẫn các bạn về Blade Template Engine trong Laravel 5. Từ bài sau trở đi mình sẽ hướng dẫn theo dự án website tin tức luôn cho các bạn dễ nắm bắt. Mời các bạn đón đọc. Bài viết trên là những hiểu biết của cá nhân mình nên không tránh phải sai sót, rất mong sự đóng góp ý kiến của các bạn để bài viết trở nên hữu ích hơn.