我想问下这类php情况该如何优化代码?

我把新增编辑内容页面做在同一个页面上,然后html赋值已填写的东西,但新增页面是没有任何默认值的,我就像如下做法,觉得自己很傻一定有什么办法解决的

public function aeCard(Request $Request , GiftList $GiftList){
        $Card = Model('Card');
        $id = $Request->route('id','0');
        $post = $Request->post();
        if(!$id){
            if(!$post){
                $info['name'] = '';
                $info['banner'] = '';
                $info['utype'] = 0;
                $info['frequency'] = 0;
                $info['eventshare'] = 0;
                $info['clickshare'] = 0;
                $info['type'] = 0;
                $info['atype'] = 0;
                $info['state'] = 1;
                $info['starttime'] = date('Y-m-d') . ' 00:00:00';
                $info['endtime'] = date('Y-m-d') . ' 23:59:59';
                $info['mid'] = 'null';
                $info['id'] = 0;
                $info['cid'] = 'null';
                $info['qrcode'] = 0;
                $info['description'] = '';
                $info['notluck'] = 0;
                $info['giftdata'] = '';
                $info['qrcodedata'] = '0';
                $info['background'] = '0';
                $info['backgroundcolor'] = '';
                $this->assign('info',$info);
                $this->assign('id',0);
                return $this->fetch('ae_card');
            }
        }else{
            $info = $Card->CardInfo($id);
            $info['starttime'] = date('Y-m-d H:i:s',$info['starttime']);
            $info['endtime'] = date('Y-m-d H:i:s',$info['endtime']);
            $giftData = $GiftList->gainActivityGift($id);
            $giftData = array_column($giftData,'id');
            $info['giftdata'] = implode(',',$giftData);
            $info['qrcodedata'] = json_encode(Model('Qrcodeshare')->queryActivity($id));
            $this->assign('info',$info);
            $this->assign('id',$id);
            return $this->fetch('ae_card');
        }
    }
阅读 2.4k
3 个回答

新增时直接赋值为空就好

$info = [];

页面表单在输出的时候做下判断

<input type="text" name="name" value="<?=isset($info['name'])?$info['name']:'';?>">

如果使用模板的话,模板一般都把判断的工作做了,比如thinkphp的模板语法

<input type="text" name="name" value="{$info.name|default=''}">

smarty是这样的

<input type="text" name="name" value="{$info.name|default:''}">

去mysql设置对应字段的默认值

后端:如果有 id ,通过 id 获取数据,并赋值给页面模板变量,比如 $info;
前端页面:
方式一:默认新增,给每个表单元素值的时候,判断 $info 里是否有对应的值,有则填上,没有则给一个默认值;
方式二:页面中的表单元素默认都给默认值,页面渲染完毕后,js 判断 $info ,依次遍历赋值

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