The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 包含子模板 ]
我们在前面看到过include标签加载模板,不过那个变量可以传递到我们的模板,这即方便又容易引起安全性问题。于是,系统提供了提供了另一种子模板标签d*include。
1:废话不多说,我们在模板中写下如下的代码:
- <assign name='var3' value='我是第三个变量的值' />
- <d*include file="index+header" assign.var1="'我是一个传递的变量'" assign.var2="'我是另一个传递的变量'" />
- 我是主模板,I was wait to see the sub template ( index_header.html ) to come here !
因为 file+header表示加载当前主题的下的index 模块的header 模板,即index_header.html。
如图:

然后我们在index_header.html 模板文件加入如下的代码:
- 我是被调用的头部模板,我能够获取传递给我的两个变量的值:<br>
- <font color="green">$var1 : {$var1}<br>
- <font color="green">$var2 : {$var2}<br>
- <font color="red">$var3( 这个变量并没有被赋值,导致异常 ) : {$var3}<br>
- --------------------
程序运行后的主模板编译PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-15 06:52:13 */ ?>
- <?php $var3 = '我是第三个变量的值'; ?>
- <?php $oTemplate665 = new TemplateHtml() ;$oTemplate665->setVar('var1','我是一个传递的变量') ;$oTemplate665->setVar('var2','我是另一个传递的变量') ;$oTemplate665->display('index+header','utf-8','text/html',false,255 ) ; ?>
- 我是主模板,I was wait to see the sub template ( index_header.html ) to come here !
如图:

头部模板运行后的编译PHP 代码如下:
- <?php !defined('DYHB_PATH') && exit; /* DoYouHaoBaby Framework 模板缓存文件 生成时间:2002-01-15 06:52:13 */ ?>
- 我是被调用的头部模板,我能够获取传递给我的两个变量的值:<br>
- <font color="green">$var1 : <?php echo( $var1 ); ?><br>
- <font color="green">$var2 : <?php echo( $var2 ); ?><br>
- <font color="red">$var3( 这个变量并没有被赋值,导致异常 ) : <?php echo( $var3 ); ?><br>
- --------------------
如图:

程序输出结果如下:
- 我是被调用的头部模板,我能够获取传递给我的两个变量的值:
- $var1 : 我是一个传递的变量
- $var2 : 我是另一个传递的变量
- $var3( 这个变量并没有被赋值,导致异常 ) :
- DoYouHaoBaby Exception系统消息
- [8] Undefined variable: var3 index_header.html.compiled.php 第 5 行。
- [重试] [返回主页] [返回首页]
如图:

分析:从运行结果来看,你发现使用这种方式来加载模板,变量必须通过语法中标签的赋值属性才能够传递到模板中。比如,我们模板前面两个变量都成功传递过去了。但是第三个值没有传递过去,直接使用,系统自动抛出异常。
2:注意事项
file属性的载入模板的路径定义和include基本一致,可以参考include标签的定义。d*include中的d*只是为了不与include标签冲突而设置的。
- 支持完整路径
- 主题名@(分组:)模块名+操作名
- 条件表达式(当然变量也在其中)
