做活动插件,想怎么样能做一个可以扩展性的模板呢! 最终想了一个简单的方法和大家分享!
保存为 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/>');
}
}
}
?>
保存为 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/>');
}
}
}
?>
解决方案 »
- PHP页面之间如何通过json传递数组
- 代码贴出~~~~~~~~~希望能找出我错在什么地方..谢谢
- phpmailer Error
- PHP基础的知识看完后,有什么书适合更深入的研究php``
- PHP中的多条件同时搜索
- 再问音乐播放问题,困惑
- php中二级联动下拉菜单,选第一个下拉菜单,第二个下拉菜单的值从数据库中查询出来显示.
- 关于配置osCommerce时register_globals is disabled in php.ini的设置问题(300分求)。。。
- $_POST的值不大好啊!!!
- 关于字符串的操作 高手们来帮帮我呀~~~~~~~~~~~~
- 求一个修改图片文件名参数
- urlencode转义字符串的问题
最好加个extra_attribute拼入html代码,方便以后随意写入各种属性,比如onclick='..',函数里也不要直接print,而是return,把显示控制权交给主程序,还有你的checkbox,select等控件,默认选择功能得有。。
加油!继续完善!