本文简单介绍了ThinkPHP模版引擎中变量输出的格式用法,供大家参考。具体分析如下:
我们已经知道了在Action中使用assign方法可以给模板变量赋值,
例如:
$result = M()->table('student')->find();
this->assign('result',$result);
这里为了方便一般将assign里面的两个参数设为一样的,当然也可以自由定义为不同值;
赋值后怎么在模板文件中输出变量的值呢?
使用内置的模板引擎输出变量,只需要在模版文件使用:{$result}
模板编译后的实际代码就是
<?php echo($result);?>
注意模板标签的{和$之间不能有任何的空格,否则标签无效。普通标签默认开始标记是 {,结束标记是 },也可以通过设置TMPL_L_DELIM和TMPL_R_DELIM进行更改,例如,我们在项目配置文件中定义:
'TMPL_L_DELIM'=>'<{',
'TMPL_R_DELIM'=>'}>',
那么,上面的变量输出标签就应该改成:
<{$result}>
如果我们需要把一个用户数据对象赋值给模板变量:
例如:
$result = M('student');
$result = $result->find(1);
$this->assign('result',$result);
也就是说$user其实是一个数组变量,我们可以使用下面的方式来输出相关的值:
$result = $result->find(1);
$this->assign('result',$result);
{$result['name']}//输出学生的名称
{$result['score']} //输出学生的分数
{$result['score']} //输出学生的分数
如果$user是一个对象而不是数组的话.
例如:
$result = M('student');
$result->find(1);
$this->assign('result',$result);
$result->find(1);
$this->assign('result',$result);
可以使用下面的方式输出相关的属性值:
{$result:name}// 输出学生的名称
{$result:score} // 输出学生的分数
{$result:score} // 输出学生的分数
3.1版本以后,类的属性输出方式有所调整,支持原生的PHP对象写法,所以上面的标签需要改成:
{$result->name}// 输出学生的名称
{$result->score} // 输出学生的分数
{$result->score} // 输出学生的分数
为了方便模板定义,还可以支持点语法,例如,上面的
{$result['name']}// 输出学生的名称
{$result['score']} // 输出学生的分数
{$result['score']} // 输出学生的分数
可以改成
{$result.name}
{$result.score}
{$result.score}
当变量是多个表格中多条结果时;
例如:
$result=M()->table('student')->order('score desc')->select();
变量输出时我们可以这样写:
{$resut.0.score}
这样我们就能得到第一条结果的score值;
? 这里留下一个问题,如果不指定结果中取值对象,会返回一个Array!
例如:直接输出{$result}