鍍金池/ 問答/PHP/ 我想問下這類php情況該如何優(yōu)化代碼?

我想問下這類php情況該如何優(yōu)化代碼?

我把新增編輯內容頁面做在同一個頁面上,然后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');
        }
    }
回答
編輯回答
刮刮樂

去mysql設置對應字段的默認值

2017年4月21日 05:07
編輯回答
初心

后端:如果有 id ,通過 id 獲取數據,并賦值給頁面模板變量,比如 $info;
前端頁面:
方式一:默認新增,給每個表單元素值的時候,判斷 $info 里是否有對應的值,有則填上,沒有則給一個默認值;
方式二:頁面中的表單元素默認都給默認值,頁面渲染完畢后,js 判斷 $info ,依次遍歷賦值

2018年9月11日 08:38
編輯回答
若相惜

新增時直接賦值為空就好

$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:''}">
2017年2月22日 07:23