/** * (array|\yii\db\ActiveRecord[]) createTree : * @param $id 树父级ID * @param $user_id 用户ID * @return array|\yii\db\ActiveRecord[] */ public function createTree($id, $user_id) { //empty(var):当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE if (empty($user_id) || empty($id)) { return []; } $data = []; if ($id === 'js.map_field') { $data = MapTable::find()->select(['id' => 'tname', 'text' => 'cnname'])->where(['status' => MapTable::STATUS_ON])->orderBy(['order_num' => SORT_DESC])->asArray()->all(); if (!empty($data)) { foreach ($data as &$arr) { $arr['children'] = true; $arr['icon'] = 'fa fa-list text-orange'; $arr['text'] = "<span class='text-info'>{$arr['text']}</span>"; } } } else { $data = ColTable::find()->select(['id' => "CONCAT('gdjs.', pbc_tnam , '.', pbc_cnam)", 'text' => 'pbc_labl', 'pbc_cnam'])->where(['pbc_tnam' => $id])->orderBy(['sort_no' => SORT_ASC])->limit(24)->asArray()->all(); if (!empty($data)) { foreach ($data as &$arr) { $user_power = self::getUserPower($user_id, $id, $arr['pbc_cnam']); $user_power_icon = 'fa-key'; $user_power_class = 'text-success'; switch ($user_power) { case self::USER_POWER_VIEW: $user_power_icon = 'fa-eye'; $user_power_class = 'text-primary'; break; case self::USER_POWER_VIEW_AFTER_ADD: $user_power_icon = 'fa-eye-slash'; $user_power_class = 'text-info'; break; case self::USER_POWER_DENY: $user_power_icon = 'fa-lock'; $user_power_class = 'text-muted'; break; } $arr['children'] = false; $arr['icon'] = "fa {$user_power_icon} {$user_power_class}"; $arr['text'] = "<span class='" . $user_power_class . "'>{$arr['text']}</span>"; } } } return $data; }
public function actionIndex() { $responseType = Yii::$app->request->get('type'); $returnData = []; switch ($responseType) { case "fetch": $returnData = ColTable::find()->select(['*'])->orderBy(['pbc_tnam' => SORT_ASC, 'sort_no' => SORT_ASC])->all(); return Json::encode($returnData); case "crud": $requestAction = Yii::$app->request->post('action'); switch ($requestAction) { case "create": $requestID = key(Yii::$app->request->post('data')); $requestData = Yii::$app->request->post('data')[$requestID]; $model = new ColTable(); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } if ($model->save()) { $requestData['id'] = $model->id; $requestData['created_at'] = $model->created_at; $requestData['updated_at'] = $model->updated_at; $data = []; $data[] = $requestData; return Json::encode(['data' => $data]); } else { $error = '新增操作发生意外!'; throw new Exception($error); } case "edit": $editID = array_keys(Yii::$app->request->post('data')); //执行事务,保存必须都成功了才行 $transaction = ColTable::getDb()->beginTransaction(); //返回值 $data = []; try { foreach ($editID as $requestID) { $requestData = Yii::$app->request->post('data')[$requestID]; $model = ColTable::findOne($requestID); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } $model->save(); //单个字段更新的时候 if (count($requestData) == 1 || !is_array($requestData)) { $requestData = ColTable::find()->select(['*'])->where(['id' => $requestID])->one(); } else { $requestData['id'] = $requestID; $requestData['created_at'] = $model->created_at; $requestData['updated_at'] = $model->updated_at; } $data[] = $requestData; } //提交事务 $transaction->commit(); return Json::encode(['data' => $data]); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } case "remove": //多选则删除全部 用deleteAll()不会触发 event: EVENT_BEFORE_DELETE 和 EVENT_AFTER_DELETE foreach (Yii::$app->request->post('data') as $removeID => $removeData) { ColTable::findOne($removeID)->delete(); } return Json::encode($returnData); default: return Json::encode($returnData); } default: return $this->render('index'); } }