模板渲染与赋值

创建于 2022-07-27 / 最近更新于 2022-07-28 / 1352
字体: [默认] [大] [更大]

基础

先介绍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
    image.png

模板渲染

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 人点赞过