插件开发手册

模板

最近更新:6个月前

模板类开源地址是https://github.com/ebcms/library-template

模板文件

命名规则是

文件@分组

例如 common/header@ebcms/admin 是获取 ebcms/admin 分组下的 common/header.php 文件

一个分组可以注册多个路径

$template->addPath('ebcms/admin', './../template/', 1);
$template->addPath('ebcms/admin', './../template2/', 2);
$template->addPath('ebcms/admin', './../template3/', 3);

这样,通过

$template->randerFromFile('common/header@ebcms/admin');

就会从上面注册的三个路径中按照优先级去找对应的文件, appPath 的第三个参数是优先级,越大越优先,例如上面的代码就是会优先从 ./../template3/ 中寻找,找不到再到低优先级的路径中寻找,直到找到需要的模板,若找不到会抛出异常。

系统定义

系统已经将

./template/插件包/     优先级较高
./plugin/插件包/src/template/   优先级较低

两个目录注册到了对应的分组,例如 ...@plugin/demo 会依次在下面两个目录中寻找

/template/plugin/demo/
/plugin/demo/src/template/

常用方法

渲染文件

$template->randerFromFile('...@分组');

渲染字符串

$template->randerFromString('现在是{:time()}');

分配变量

// 方式1
$template->assign('title', '标题');
$template->assign('name', 'work');

// 方式2
$template->assign([
    'title'=>'标题',
    'name'=>'work',
]);

// 方式3
$template->randerFromString('现在是{:time()}', [
    'title'=>'标题',
    'name'=>'work',
]);
$template->randerFromFile('...@分组', [
    'title'=>'标题',
    'name'=>'work',
]);

模板标签

原生标签

// 方式1
<?php echo 111;?>

// 方式2
{php}
echo 222;
{/php}

// 方式3
{php echo 3}

引入文件

{include common/header@ebcms/admin}
<h1>你好</h1>
{include common/footer@ebcms/admin}

变量

{$title}
{$item['title']}
{$item.body}

foreach循环

{foreach $arr as $key=>$item}

{$item.title}
{$item.body}
{$item.click}
...

{/foreach}

for循环

{for $i=0; $i < 10; $i++}

{$i}

{/for}

if判断

{if $a==3}
..
{elseif $b==4}
..
{else}
..
{/if}

switch选择

{switch $b}
{case 1}
是1
{/case}
{case 2}
是2
{/case}
{default}
默认值
{/default}
{/switch}

function函数

// 定义函数
{function test($a,$b=2)}
<p>a:{$a}</p>
<p>b:{$b}</p>
{/function}

// 执行函数
{php echo test(2,33)}

dump调试

{dump $a}
{dump $var}

echo输出

{echo 1+2}

// 简写 用冒号
{:1+2}

Powered By EBCMS