07/09/2018, 17:29

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 ...

Ở 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 AppProviders;

use IlluminateSupportFacadesView;

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.

0