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