php Thinkphp 表单自动生成

用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.代码存在哪些问题,该怎么优化;还有什么好的解决思路.

阅读 4.6k
2 个回答

照你这个思路的话。可以把页面类型 字段 字段数 字段类型 验证等等 写成配置文件的形式。在模版里根据配置展示就可以了

前端页页面中的div模块, 可能一个项目中有很多这种比较类似的div块, 你想的是不重复去写是吗, 我个人觉得可以将相同的部分直接封装在js中, 通过调用封装的js去填充, 不同的地方也根据不同的标识去填充响应的内容. 不过你想省事儿的话, 这样存在的问题应该是比较多的, 你必须要清楚很多种不同的标识需要的是什么, 只要你自己不会混乱进行了, 但是有一点, 不知道你注释要怎么写, 别人是否能够一目了然这也是关键

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题