做活动插件,想怎么样能做一个可以扩展性的模板呢! 最终想了一个简单的方法和大家分享!
保存为 test1.php
<?php
$tpl = array(
array('name' => 'con_value',
'children' => array(
array('name' => 'range_type','id' => 'range_type0','label' => '全店参与','type' => 'radio','value' => 'ALL'),
array('name' => 'range_type','id' => 'range_type1','label' => '部分参与','type' => 'radio','value' => 'PART'),
array('name' => 'range_type','id' => 'range_type2','label' => '部分不参与','type' => 'radio','value' => 'PART_NOT'),
),
),
array('name' => 'con_value','label' => '满','textalign' => 'left','type' => 'text','value' => '','children' => 
array(
array('name' => 'con_type','label' => '','type' => 'select','value' => array(
'1' => '元(订单金额)',
'0' => '件',
))
),
),
array('name' => 'type','label' => '免邮','textalign' => 'left','type' => 'checkbox','value' => '',
'children' => array(
array('name' => 'diqu','label' => '设置','type' => 'button','value' => '')
),
),
);
?>保存为 demo.php (核心代码直接访问即可,其他的扩展想咋样都可以!)
<?php
require_once(test1.php');getElement($tpl,0);function getElement($elements,$root)
{
if (!$elements)
{
return;
die();
} foreach($elements as $i => $element)
{
$textalign = isset($element['textalign'])?$element['textalign']:'right'; // <summary>
// 根据元素对象进行格式化输出
// </summary>
switch ($element['type'])
{
// 返回输入字段
case 'text':
if (is_array($element['value']))
{
$element['value'] = join('',$element['value']);
}
print('<input type="'. $element['type'] .'" name="'. $element['name'] .'" id="'. $element['name'] .'" value="'. $element['value'] .'"/>'. $element['label']);
break; // 单选框
case 'radio':
$id = isset($element['id'])?$element['id']:$element['name'];
if (is_array($element['value']))
{
$element['value'] = join('',$element['value']);
} print('<input type="'. $element['type'] .'" name="'. $element['name'] .'" id="element['. $id .']" value="'. $element['value'] .'"/><label for="element['. $id .']">' . $element['label'] . '</label>');
break; // 复选框
case 'checkbox':
$id = isset($element['id'])?$element['id']:$element['name'];
if (is_array($element['value']))
{
$element['value'] = join('',$element['value']);
} print('<input type="'. $element['type'] .'" name="'. $element['name'] .'" id="element['. $id .']" value="'. $element['value'] .'"/><label for="element['. $id .']">' . $element['label'] . '</label>');
break; // 超级连接
case 'a':
print('<a href="'. $element['url'] .'" target="'. $element['target'] .'" title="'.$element['label'].'">'. $element['label'] .'</a>');
break; // 超级连接
case 'label':
print($element['label']);
break; // 下拉菜单
case 'select':
print('<select name="'. $element['name'] .'">'); foreach($element['value'] as $s => $options){
print('<option value="'. $s .'">'.$options.'</option>');
} print('</select>');
break;
} if (is_array($element['children']))
{
getElement($element['children'],1);
} if ($root == 0)
{
print('<br/>');
}
}
}
?>