コード例 #1
0
 public function run()
 {
     $id = null;
     $modelClass = $this->modelClass;
     /** @var yii\db\BaseActiveRecord $model */
     $model = new $modelClass(['scenario' => $this->scenario]);
     if ($this->checkAccess) {
         call_user_func($this->checkAccess, $this->id, null, ['newModel' => $model]);
     }
     $session = Yii::$app->getSession();
     $successMessage = $session->getFlash('success');
     $errorMessage = $session->getFlash('error');
     $request = Yii::$app->getRequest();
     if ($request->getIsPost()) {
         $model->load($request->getBodyParams());
         // validation
         if ($request->getIsAjax() && $request->getQueryParam('validation')) {
             Yii::$app->getResponse()->format = Response::FORMAT_JSON;
             return ActiveForm::validate($model);
         }
         // processing
         $saved = $model->validate() && $model->save();
         if ($saved) {
             $id = ModelHelper::getPrimaryKey($model);
             $successMessage = Yii::t('mozayka', 'Record "{record}" has been successfully saved.', ['record' => ModelHelper::getDisplayField($model)]);
             if (!$request->getIsAjax()) {
                 $session->setFlash('success', $successMessage);
                 if (ModelHelper::canUpdate($model)) {
                     $url = ['update-form', 'id' => $id];
                 } elseif (ModelHelper::canRead($model)) {
                     $url = ['read-form', 'id' => $id];
                 } elseif (ModelHelper::canList($modelClass)) {
                     $url = ['list'];
                 } else {
                     $url = Yii::$app->getHomeUrl();
                 }
                 return $this->controller->redirect($url);
             }
         } else {
             ModelHelper::log($model);
             $errorMessage = Yii::t('mozayka', 'Record "{record}" has not been saved.', ['record' => ModelHelper::getDisplayField($model)]);
         }
         if ($request->getIsAjax()) {
             Yii::$app->getResponse()->format = Response::FORMAT_JSON;
             return ['ok' => $saved, 'message' => $saved ? $successMessage : $errorMessage, 'id' => $saved ? $id : false];
         }
     }
     // rendering
     $viewParams = ['canList' => ModelHelper::canList($modelClass), 'pluralHumanName' => ModelHelper::pluralHumanName($modelClass), 'successMessage' => $successMessage, 'errorMessage' => $errorMessage, 'model' => $model, 'fields' => $this->prepareFields($model), 'formClass' => $this->formClass, 'formConfig' => array_merge($this->formConfig, ['validationUrl' => [$this->id, 'validation' => 1]])];
     if ($request->getIsAjax()) {
         return $this->controller->renderPartial($this->view, $viewParams);
     } else {
         return $this->controller->render($this->view, $viewParams);
     }
 }
コード例 #2
0
 public function run($id = null)
 {
     //$modelClass = $this->modelClass;
     /** @var yii\db\BaseActiveRecord $model */
     $model = $this->findModel($id);
     if (is_null($id)) {
         $id = ModelHelper::getPrimaryKey($model);
     }
     if ($this->checkAccess) {
         call_user_func($this->checkAccess, $this->id, $model, ['id' => $id]);
     }
     return __METHOD__;
 }
コード例 #3
0
 public function run($id = null)
 {
     $modelClass = $this->modelClass;
     /** @var yii\db\BaseActiveRecord $model */
     $model = $this->findModel($id);
     if (is_null($id)) {
         $id = ModelHelper::getPrimaryKey($model);
     }
     if ($this->checkAccess) {
         call_user_func($this->checkAccess, $this->id, $model, ['id' => $id]);
     }
     // rendering
     $viewParams = ['canList' => ModelHelper::canList($modelClass), 'pluralHumanName' => ModelHelper::pluralHumanName($modelClass), 'model' => $model, 'id' => $id, 'displayField' => ModelHelper::getDisplayField($model), 'fields' => $this->prepareFields($model), 'formClass' => $this->formClass, 'formConfig' => array_merge($this->formConfig, ['readOnly' => true])];
     if (Yii::$app->getRequest()->getIsAjax()) {
         return $this->controller->renderPartial($this->view, $viewParams);
     } else {
         return $this->controller->render($this->view, $viewParams);
     }
 }