polycademy / citemplating
Codeigniter 的静态辅助类,提供部分和布局 - 契约优于配置
This package is not auto-updated.
Last update: 2019-02-20 17:22:34 UTC
README
这是一个简单的静态辅助类,增强了 Codeigniter 的视图加载,以添加共享布局和部分模板功能。
布局可以想象为一个模板文件,它指定了页眉、页脚、侧边栏以及任何在网页之间共享且几乎不更改的元素。大型网络应用程序可能有多个布局,一个用于博客,一个用于管理面板,一个用于主页。每个布局可能具有不同的页眉或缺少/包含侧边栏。布局是主模板,指定其他模板的模板。
部分可以想象为跨多个不同区域可重用的模板。一个例子是一个表格行,它可能在不同布局的不同页面上的不同表格中使用。部分是孙子模板,不指定任何其他模板,也不知道哪个父模板会选择它来使用。
有许多强大的模板库,但我更喜欢增强 CI 的自身加载器,而不是创建一个全新的解析器。此外,这里没有 DSL,只是正常的 PHP。
要使用此
- 您拥有的每个控制器都应在视图文件夹中有一个具有匹配名称的对应文件夹。因此,名为 blog.php 的控制器应具有 views/blog 文件夹。
- 控制器中的每个公开方法都应该有自己的视图,其名称与视图控制器文件夹中的名称匹配。因此,具有 articles 作为公开方法的 blog.php 控制器应具有 views/blog/articles_view.php 视图。
- 部分以 _partial 结尾,并存储在部分文件夹中,例如 views/partials/rows_partial.php。
- 布局以 _layouts 结尾,并存储在布局文件夹中,例如 views/layouts/main_layout.php。
您的视图结构将开始看起来像这样
views
|
|----layouts
| |
| |----default_layout.php
| |----admin_layout.php
| |----json_layout.php
|
|----partials
| |
| |----header_partial.php
|
|----home
| |
| |----index_view.php
|
|----blog
|
|----articles_view.php
您不必加载视图
//first parameter is the name of the view stored in the controller view folder
//second parameter is the array of view data
//third parameter is an optional specification of the layout file, by default it's 'default'
Template::compose('index', $view_data);
//to load json view
Template::compose(false, $json_array, 'json');
在您的视图和布局中,您可以直接像这样加载部分
//first parameter is the name of the partial
//second parameter is the data array to be passed in
//third parameter is a boolean of whether you want the partial to be looped, in that case you need to use $row variable in the looped partial or $row->XXX or $row['XXX']
//fourth parameter is a boolean of whether you want to buffer the output, so the partial returns a variable instead of echoing the output, in that cause you would have to <?= Template::partial... etc ?>
Template::partial('header', $header);
此静态类通过 Composer 安装,因此会自动加载。您可以将 Template::partial 或 Template::compose 假设为全局函数!
在布局文件中,您必须输出 $yield 变量,它是从实际视图传递的数据。例如,default_layout.php 可能是
<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
<? Template::partial('header', $header) ?>
<?= $yield ?>
<? Template::partial('footer', $footer) ?>
您在 Template::compose
期间不传递 $yield 数据,您只需有一个用于 $header 的字段,一个用于 $footer 的字段,其余的字段直接传递到 _view 文件,编译后的模板会自动放入 $yield。
将此添加到您的 composer.json require 列表中。
"polycademy/citemplating": "*"
此库还与嵌套在目录中的控制器一起工作。您只需在视图文件夹中复制相同的目录结构。