视图布局¶
CodeIgniter 提供了一个简单但非常灵活的布局系统,使你可以轻松地在整个 web 应用程序中使用一个或多个基本页面布局。 布局支持在任何渲染视图中插入内容节。你可以通过创建不同的布局来支持一栏、两栏或博客存档页面等。布局不会直接被渲染, 但可以通过渲染一个视图(View),而该视图可以指定要扩展的布局(Layout)来实现(渲染布局)。
创建布局¶
布局和其他视图一样。它们唯一的区别是它们的用途。布局就是使用 renderSection()
方法的视图文件。这个方法会充当内容的占位符。
<!doctype html>
<html>
<head>
<title>My Layout</title>
</head>
<body>
<?= $this->renderSection('content') ?>
</body>
</html>
renderSection() 方法只有一个参数,那就是节的名称,这样所有子视图就都可以知道节的名称。
在视图中使用布局¶
无论何时需要把视图插入到布局中时,都必须在文件开头使用 extend()
方法:
<?= $this->extend('default') ?>
extend() 方法采用你所希望使用的视图文件的名称。由于它们也是视图,因此它们的位置就像视图一样。默认情况下, 会在应用程序的 View 目录中查找它们,但还会扫描其他 PSR-4 定义的命名空间。你还可以加上一个命名空间以在特定名称空间的 View 目录中定位视图:
<?= $this->extend('Blog\Views\default') ?>
拓展布局所有内容时,必须包含 section($name)
和 endSection()
方法的调用。这些调用之间的任何内容都将插入到与节名称匹配的
renderSection($name)
调用所在的布局中::
<?= $this->extend('default') ?>
<?= $this->section('content') ?>
<h1>Hello World!</h1>
<?= $this->endSection() ?>
endSection()
不需要节的名称,它会自动结束需要结束的节。