📅  最后修改于: 2023-12-03 15:06:06.285000             🧑  作者: Mango
Yii是一个基于MVC架构的PHP框架,它拥有强大的布局系统,可以使页面渲染变得更加简单和快捷。在 Yii 中,布局是一个可重用的视图组件,它定义了一些公共的容器元素,例如头部、尾部或侧边栏,并提供了将子视图渲染到这些容器中的简便方式。
布局文件是 Yii 应用程序中使用的主体模板文件。它们通常放置在 views/layouts
目录中,它们的文件名以单词 main
开头(例如:main.php
) 通常会定义网站页面的顶部、底部和侧边栏等常见组件。
布局文件可以使用 PHP 代码来定义页面内容,也可以使用所谓的“部件”组件,这些组件是一些预定义的可重用页面元素(例如:导航菜单、分页器等)。
下面是一个简单的布局文件示例:
<?php
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;
/* @var $this \yii\web\View */
/* @var $content string */
AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?= Html::csrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>
<div class="wrap">
<?php
NavBar::begin([
'brandLabel' => 'My Company',
'brandUrl' => Yii::$app->homeUrl,
'options' => [
'class' => 'navbar-inverse navbar-fixed-top',
],
]);
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
],
]);
NavBar::end();
?>
<div class="container">
<?= Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>
<?= $content ?>
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-left">© My Company <?= date('Y') ?></p>
<p class="pull-right"><?= Yii::powered() ?></p>
</div>
</footer>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
视图文件通常包含表示单个页面所需要的 HTML 结构和内容。在 Yii 中,视图文件通常包含在各自的控制器目录中。
Yii的视图文件可以继承自一个布局文件,并利用布局文件中定义的公共组件展示视图内容。例如,在上面的布局示例中,我们看到 $content
变量被用来封装子视图的内容,这个子视图就是在继承布局文件的子视图。
下面是一个简单的示例,演示如何在视图文件中使用布局:
<?php
$this->title = 'My Page';
$this->params['breadcrumbs'][] = $this->title;
?>
<h1><?= $this->title ?></h1>
<p>这是我的网页内容。</p>
Yii的布局系统是一个强大的工具,可帮助您更轻松地管理复杂页面的 HTML 结构,从而更快速地开发您的应用程序。