📜  Yii-布局(1)

📅  最后修改于: 2023-12-03 15:06:06.285000             🧑  作者: Mango

Yii布局

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">&copy; 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 结构,从而更快速地开发您的应用程序。

参考资料