用thinkphp3.2时候,多数增删改查的页面基本相似。但是需要一个个去修改,修改列表字段,修改添加、编辑表单,重复工作要做好多次,有什么好的思路去做代码复用了?
参考大家的意见我做了如下的实现,请大家看一下谢谢:
1.先在行为中生成每个表的配置文件
$tables=M()->query('show tables');
$ts=[];
foreach ($tables as $v) {
$ts[]=$v['tables_in_addon'];
}
// 显示每个表的字段
$fields=[];
foreach ($ts as $v) {
$fields[$v]=M()->query("show FULL FIELDS from {$v}");
}
// 遍历生成配置文件
foreach ($fields as $k => $v) {
$filename=$k.".php";
$path=APP_PATH.'Common\Conf\Data';
is_dir($path)||mkdir($path,0777,true);
$str="<?php\r\n return ".var_export($v,true).";";
file_put_contents($path.'\\'.$filename, $str);
}
2.然后在基础控制器中,读取控制器中数据,并分配到模版.
public function __construct(){
parent::__construct();
$filename=C('DB_PREFIX')."_".lcfirst(CONTROLLER_NAME).".php";
// 读取指定的配置器文件
$bd=require COMMON_PATH.'/Conf/Data/'.$filename;
$this->assign('bd',$bd);
}
3.在模版页面中根据字段生成表格,这里大多数input类型为text,所以我们没有做表单的类型判断.
<form action="">
<?php foreach($bd as $v):?>
<?php echo $v['comment']?>:<input type="text" name="{$v['field']}"><br>
<?php endforeach;?>
</form>
有几个问题:
1.这样做有什么安全隐患,config目录下的表配置文件直接访问的话,直接会暴露数据库中的字段信息吧.
2.代码存在哪些问题,该怎么优化;还有什么好的解决思路.
照你这个思路的话。可以把页面类型 字段 字段数 字段类型 验证等等 写成配置文件的形式。在模版里根据配置展示就可以了