視圖布局?
CodeIgniter 提供了一個簡單但非常靈活的布局系統(tǒng),使你可以輕松地在整個 web 應(yīng)用程序中使用一個或多個基本頁面布局。 布局支持在任何渲染視圖中插入內(nèi)容節(jié)。你可以通過創(chuàng)建不同的布局來支持一欄、兩欄或博客存檔頁面等。布局不會直接被渲染, 但可以通過渲染一個視圖(View),而該視圖可以指定要擴(kuò)展的布局(Layout)來實現(xiàn)(渲染布局)。
創(chuàng)建布局?
布局和其他視圖一樣。它們唯一的區(qū)別是它們的用途。布局就是使用 renderSection()
方法的視圖文件。這個方法會充當(dāng)內(nèi)容的占位符。
<!doctype html>
<html>
<head>
<title>My Layout</title>
</head>
<body>
<?= $this->renderSection('content') ?>
</body>
</html>
renderSection() 方法只有一個參數(shù),那就是節(jié)的名稱,這樣所有子視圖就都可以知道節(jié)的名稱。
在視圖中使用布局?
無論何時需要把視圖插入到布局中時,都必須在文件開頭使用 extend()
方法:
<?= $this->extend('default') ?>
extend() 方法采用你所希望使用的視圖文件的名稱。由于它們也是視圖,因此它們的位置就像視圖一樣。默認(rèn)情況下, 會在應(yīng)用程序的 View 目錄中查找它們,但還會掃描其他 PSR-4 定義的命名空間。你還可以加上一個命名空間以在特定名稱空間的 View 目錄中定位視圖:
<?= $this->extend('Blog\Views\default') ?>
拓展布局所有內(nèi)容時,必須包含 section($name)
和 endSection()
方法的調(diào)用。這些調(diào)用之間的任何內(nèi)容都將插入到與節(jié)名稱匹配的
renderSection($name)
調(diào)用所在的布局中::
<?= $this->extend('default') ?>
<?= $this->section('content') ?>
<h1>Hello World!</h1>
<?= $this->endSection() ?>
endSection()
不需要節(jié)的名稱,它會自動結(jié)束需要結(jié)束的節(jié)。