コード例 #1
0
 /**
  * 发布数据
  * @author gentle
  */
 public function actionCreate($id, $preview = false)
 {
     $this->actCheck('item-add', false);
     $id = !empty($id) ? (int) $id : '';
     empty($id) && $this->redirect(array('CardItem/index/id/0'));
     $dsModel = $this->loadModel($id, 'ds');
     //范围验证
     $this->scopeCheck($dsModel->database_id, $id);
     if (isset($_POST['CardItem'])) {
         $itemModel = new CardItem();
         $itemModel->dataset_id = $id;
         //数据格式化
         $this->_handleArguments($_POST['CardItem'], $dsModel->fields);
         $itemModel->attributes = $_POST['CardItem'];
         //数据校验
         foreach ($dsModel->fields as $key => $value) {
             if (isset($value['must']) && $value['must'] == 1 && (!isset($itemModel->attributes['data'][$key]) || is_string($itemModel->attributes['data'][$key]) && trim($itemModel->attributes['data'][$key]) == '' || is_array($itemModel->attributes['data'][$key]) && empty($itemModel->attributes['data'][$key]))) {
                 Yii::app()->user->setFlash("error", "必填项 {$value['name']} 无数据!");
                 $this->redirect(array('CardItem/index/id/' . $id));
             }
         }
         if ($itemModel->save()) {
             $this->addLog('item', $itemModel->id, '发布了“' . $dsModel->name . '”的新数据');
             Yii::app()->user->setFlash("success", "发布数据成功!");
         } else {
             Yii::app()->user->setFlash("error", "发布数据失败!");
         }
         $this->redirect(array('CardItem/index/id/' . $id));
     }
     //构造字段Html
     $dsModel = $dsModel->sortField();
     //排序字段
     $fieldHtml = '';
     foreach ($dsModel->fields as $key => $value) {
         //普通字段
         if ($value['type'] == 'field') {
             $fieldHtml .= $this->fieldItemHtml($key, $value);
             //字段组
         } elseif ($value['type'] == 'group') {
             $groupData = array();
             $groupData['datasetId'] = $id;
             $groupData['enName'] = $key;
             $groupData['data'] = $value;
             $groupData['html'] = $this->groupItemHtml($id, $key);
             $fieldHtml .= $this->renderPartial('_form_item_group', $groupData, true);
         }
     }
     $data = array();
     $data['model'] = $dsModel;
     $data['datasetId'] = $id;
     $data['fieldHtml'] = $fieldHtml;
     $data['preview'] = $preview;
     if ($preview) {
         $this->renderPartial('_form_item', $data);
     } else {
         $this->render('_form_item', $data);
     }
 }