一定要用模板引擎其实我是想要得到各种模板引擎的正规写法和优化写法(因为好多模板引擎我没有用过,有些用过也忘的差不多了)
与我写的模板引擎做一对比,还请大家多多帮忙,谢谢!!!TTemplate
<table block='data'>
<tr><td>{char}</td><td></td></tr>
<tr block='child,,1'><td></td><td>{text}</td></tr>
</table><?php
...
function data() {
return $ar);
}
...
与我写的模板引擎做一对比,还请大家多多帮忙,谢谢!!!TTemplate
<table block='data'>
<tr><td>{char}</td><td></td></tr>
<tr block='child,,1'><td></td><td>{text}</td></tr>
</table><?php
...
function data() {
return $ar);
}
...
$ar = array( "A"=>array( "aa", "aaa" ), "B"=>array( "bb","bbb") );然后用
foreach( $ar as $key=>$value ){
$t->setvar( "char", $key);
foreach( $value as $val) {
$t->setvar( "text", $val );
$t->parse("child_blocks", "child_block", true );
}
$t->parse( "char_blocks", "char_block", true);
} PHPLIB TEMPLATE
======================
<table>
<!-- BEGIN char_block -->
<tr>
<td>{char}</td>
</tr>
<tr>
<!-- BEGIN child_block -->
<td>{text}</td>
<!-- END child_block -->
</tr>
<!-- END char_block -->
</table>看起来比较麻烦的说呵呵 。。可能我水平有限。
{section name=i loop=$ar}
$ar[i]['char']
{section name=j loop=$ar[i]['child']}
$ar[i]['child'][j]['text']
{/section}
{/section}
只要模板语言支持嵌套就行了
$ar = array( array( 'bb'=>"aa", 'cc'=>"aaa" ), array( 'bb'=>"bb",'cc'=>"bbb") );模板:
<!-- BEGIN row -->
{bb}{cc}
<!-- END row -->
程序:
$tpl->assign('row', $ar)手写,没测试,大概就这样
模板
<table>
<!-- BEGIN row -->
<tr><td>{char}</td><td></td></tr>
<!-- BEGIN child -->
<tr><td></td><td>{text}</td></tr>
<!-- END child -->
<!-- END row -->
</table>
程序
$page->assign('row',$ar);phplib template可这样
模板
<table>
<!-- BEGIN row -->
<tr><td>{char}</td><td></td></tr>
<!-- BEGIN child -->
<tr><td></td><td>{text}</td></tr>
<!-- END child -->
<!-- END row -->
</table>
程序
$tpl->set_block('root','row','row1');
$tpl->set_block('row','child','child1');
foreach($ar as $row) {
$tpl->set_var('char',$row['char']);
$tpl->set_var('child1','');
foreach($row['child'] as $v) {
$tpl->set_var($v);
$tpl->parse('child1','child',true);
}
$tpl->parse('row1','row',true);
}**** 当然这不是最优解,仅供参考!希望得到最多、最好的解法
<?php
$ar = array(array('char' => 'A','child' => array(array('text' => 'aa'),array('text' => 'aaa'),) ),
array('char' => 'B','child' => array(array('text' => 'bb'),array('text' => 'bbb'),) ),
);
$tpl->assign("ar", $ar);
$tpl->display('test.htm');
?> test.htm:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title></title>
</head>
<body>
<{section name=sec1 loop=$ar}>
<{$ar[sec1].char}><br>
<{section name=sec2 loop=$ar[sec1].child}>
<{$ar[sec1].child[sec2].text}><br>
<{/section}>
<{/section}></body>
</html>我的方法
smarty也可这样
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title></title>
</head>
<body>
{%foreach from=$ar item=sec1%}
{%$sec1.char%}<br>
{%foreach from=$sec1.child item=sec2%}
{%$sec2.text%}<br>
{%/foreach%}
{%/foreach%}
</body>
</html>
smarty也可这样
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title></title>
</head>
<body>
{%foreach from=$ar item=sec1%}
{%$sec1.char%}<br>
{%foreach from=$sec1.child item=sec2%}
{%$sec2.text%}<br>
{%/foreach%}
{%/foreach%}
</body>
</html>
<php:iterator source="ar">
<com:label source="ar" field="char"/>
<com:set source="ar" field="child" var="child"/>
<php:iterator source="child">
<com:label source="child" field="text"/>
</php:iterator>
</php:iterator>
程序:
$ar = array(
array('char' => 'A',
'child' => array(
array('text' => 'aa'),
array('text' => 'aaa'),
)
),
array('char' => 'B',
'child' => array(
array('text' => 'bb'),
array('text' => 'bbb'),
)
),
);模版:
<table>
{section name=var loop=$ar}
<tr>
<td>{$ar[var].char}<td>
</tr>
{section name=var1 loop=$ar[var].child}
<tr>
<td>{$ar[var].child[var1].text}<td>
</tr>
{/section}
{/section}
</table>
<!-- BEGIN ROWS -->
{char}
<!-- BEGIN Childs -->
{childs}
<!-- END Childs -->
<!-- END ROWS -->代码:
foreach($ar as $char=>$childs){
$Tpl->SetVar("char",$char);
foreach($childs as $index=>$value){
$Tpl->SetVar("childs",$value);
$Tpl->parse("Childs ",true);
}
$Tpl->parse("ROWS",true);
}未测试,CodeCharge模板
注:代码极其简单html:
<table tal:repeat="item result">
<tr>
<td bgcolor='#EFEFEF' tal:content="item/char">item name</td>
</tr>
<tr>
<td>
<table width="100%">
<tr tal:condition="item/child" tal:repeat="item_child item/child">
<td tal:content="item_child/text">item_child name</td>
</tr>
</table>
</td>
</tr>
</table>code:
$tal->set("result", $ar);
print_r($tal->execute());
array('char' => 'A',
'child' => array(
array('text' => 'aa'),
array('text' => 'aaa'),
)
),
array('char' => 'B',
'child' => array(
array('text' => 'bb'),
array('text' => 'bbb'),
)
),
);
$tpl->assign("ar", $ar);
$tpl->display('test.htm');-------------------
{$ar[0].char}<br>
{$ar[0].char.child[0].text}<br>
{$ar[0].char.child[1].text}<br>
{$ar[1].char}<br>
{$ar[1].char.child[0].text}<br>
{$ar[1].char.child[1].text}<br>
{container.char}<br/>
<!-- BEGIN box -->
{box.text}<br/>
<!-- END box -->
<!-- END container -->
test.php$tpl = new template('./','./');
$tpl->set_file('test',"test.html");
foreach($ar as $_ar){
$tpl->set_block_var('container','char',$_ar['char']);
foreach($_ar['child'] as $__ar){
$tpl->set_block_vars('container.box',$__ar);
}
}
$tpl->pparse('test');