模板渲染与赋值
创建于 2022-07-27 / 最近更新于 2022-07-28 /
1707
字体:
[默认]
[大]
[更大]
基础
先介绍PESCMS系列软件模板的设计逻辑:
- 模板渲染由控制器决定。
- 模板文件名称一般为:控制器_方法.php
- 默认的模板在Public/Theme/控制器组/Defaul 目录下。
- 根据URL分析控制器可知道模板大概为止,
如:/?g=Doc&m=Article&a=index。
他的模板目录为: Public/Theme/Doc/Defaul/Artciel/Article_index.php- 接上一个解析,当/Artciel/Article_index.php不存在,程序会尝试找Public/Theme/Doc/Defaul/Article_index.php,还不存在则报错。
- 每个组别模板下会有一个命名很长的没后缀文件,里面记录着当前调用模板的名称。默认为Defulat
模板渲染
PESCMS系列软件提供了2个方法进行模板渲染。
display()
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$themeFile | string | 否 | 空字符串 | 不填写则根据控制器_组 去寻找模板 |
当我们业务编写完毕后,根据需求进行模板渲染。
调用示例
//Doc组的Artcile控制器
public function index(){
$this->display();//这里调用Article_index.php模板
}
layout()
日常的业务中,程序的UI都会包含重复调用的header、sideabr、footer等。如果用display()方法,每个模板都要重复reqiure一遍,明显不合适。
因此通过一个统一布局的layout文件动态加载变化的模板就很有必要了。
PESCMS系列软件提供了layout方法。参数如下:
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$themeFile | string | 否 | 空字符串 | 不填写则根据控制器_组 去寻找模板 |
$layout | string | 否 | layout | 不填写则调用组模板下的layout.php文件 |
调用示例
首先,我们需要在组模板下创建一个layout.php布局模板。我们继续以Doc组别为例,在Public/Theme/Doc/Default目录完成创建,并输入如下代码:
<?php include 'header.php'; ?>
<?php include 'Topbar.php'; ?>
<?php include $file; //$file对应就是layout()方法中的$themeFile ?>
<?php include 'footer.php'; ?>
layout.php模板创建并写入上述代码后,我们在控制器中调用layout()方法即可:
//Doc组的Artcile控制器
public function index(){
$this->layout();//这里调用Article_index.php模板
}
模板赋值
由于作用域的关系,模板渲染后,控制器中的变量并不能直接在模板中调用。因此,我们需要使用assign()方法进行模板赋值。
assign()
参数 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
$name | string 或 array | 是 | 无 | 字符串时则变为模板可调用的变量。 |
数组时则将数组key变为模板可调用的变量 | ||||
$value | string 或 array | 否 | 空白字符串 | 将本参数的值赋予$name的传参,在模板中即可调用本赋值内容。 |
调用示例
//示例一
$array = ['1', '2'];
$this->assign('param', $array); // 在模板可以调用$param,他的内容为 ['1', '2']
//示例二
$result = [ 'list' => [ '...更多内容...' ], 'page' => '...分页超链接...' ];
$this->assign($result);//现在模板中可直接调用$list和$page
3 人点赞过