/** * 发布数据 * @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); } }