10 YiiLayout

You might also like

You are on page 1of 3

Yii2 phần 6 - Sử dụng layout trong yii2 framework

Cách sử dụng layout trong yii2 framework, thường thì các framework sẽ có một file layout chính sau đó các phần
như header, content và footer sẽ được gọi vào layout

Trong Yii2 framework cũng vậy, Layout chính là file frontend\views\layouts\main.php trong file main.php ta sẽ đi
từng phần một.

Ở đây mình sẽ chia các folder trong frontend\view theo cấu trúc như sau

- File layout/main.php sẽ là layout chính của toàn trang web


- Partials chứa file header.php và footer cố định của trang web

Mở file frontend\views\layouts\main.php lên ta sẽ thấy có các phần sau

1. Thư viện helper của yii2


Phần này chứa các helper của yii2 framework như là Html để tạo form, NavBar menu, Breadcrumbs...

1 <?php

2  
use yii\helpers\Html;
3
use yii\bootstrap\Nav;
4
use yii\bootstrap\NavBar;
5
use yii\widgets\Breadcrumbs;
6
use frontend\assets\AppAsset;
7
use common\widgets\Alert;
8
 
9 AppAsset::register($this);

10 ?>
11

2. Phần head chứa thẻ title, css và javascript


Thư viện Asset dùng để gọi css và javascript, nó sẽ load file css và javascript từ folder frontend\web

1 <head>

2     <meta charset="<?= Yii::$app->charset ?>">

    <meta name="viewport" content="width=device-width, initial-


3
scale=1">
4     <?= Html::csrfMetaTags() ?>

5     <title><?= Html::encode($this->title) ?></title>

6     <?php $this->head() ?>

7 </head>

3. Phần body của layout


Phần này ta sẽ chia ra làm 3 phần nhỏ, tùy vào bố cục layout của bạn như thế nào bạn chia làm các phần khác
nhau, còn theo layout ở bài này thì 

- Phần header : phần đầu của trang web bao gồm các phần như là logo, menu, banner... phần này cố định
- Phần content : phần này sẽ chứa view theo từng controller, phần này động sẽ load theo từng controller
- Phần footer : phần footer là cố định

Trong thẻ <body> của file frontend\views\layouts\main.php sẽ có 3 phần chính

1 <body>

2     <?php echo $this->render('//partials/header'); ?>

3  

4     <?= $content ?>

5      

6     <?php echo $this->render('//partials/footer'); ?>

</body>
7

Bạn có thể xem hình vẽ này để hiểu rõ hơn


 

- Phần <?= $content ?> là phần động, khi bạn chạy một controller nào đó, view của controller này sẽ được load vào
file main.php thông qua biến <?= $content ?>

- Khi ta chạy một controller nào đó thì tất cả các phần header, left menu, footer đều cố định, chỉ có phần content là
thay đổi.

You might also like