public function postUpdateCategory($type) { $this->beforeAction($type); try { if (!isset($_POST)) { throw new Exception('Error request [10]'); } $meta = array(array('key' => 'id', 'isRequire' => false, 'isPrimaryKey' => true, 'defaultValue' => false), array('key' => 'title', 'isRequire' => true, 'defaultValue' => null), array('key' => 'sort', 'isRequire' => true, 'defaultValue' => 1, 'pattern' => '/\\d+/', 'message' => '排序格式錯誤,Ex: 10, 99')); $model = null; foreach ($meta as $m) { $key = $m['key']; $isPrimaryKey = isset($m['isPrimaryKey']) ? $m['isPrimaryKey'] : false; $value = isset($_POST[$key]) ? $_POST[$key] : $m['defaultValue']; if (empty($value) && $m['isRequire']) { throw new Exception("Error request [11]"); } if (isset($m['pattern'])) { if (preg_match($m['pattern'], $value) == false) { throw new Exception($m['message'] . " [110]"); } } if ($isPrimaryKey) { $pk = (int) $value; $model = $value == 'null' || empty($value) ? new ServiceFaq() : ServiceFaq::find($pk); if (empty($model)) { $model = new ServiceFaq(); } } else { $model->{$key} = $value; } } $model->type = $type; if (!$model->save()) { throw new Exception("儲存失敗,請重試一次或通知工程師!"); } return Response::json(array('status' => 'ok', 'message' => '儲存完成!')); } catch (Exception $e) { return Response::json(array('status' => 'error', 'message' => $e->getMessage())); } }