2017-09-12 1 views
2

업데이트 양식이 있는데 하나의 예외는 있지만 예상대로 작동합니다. reviewtextarea은 유효성 검사 규칙을 통과하지 않습니다. 내가 그것을 채우고 양식을 업데이 트하려고하면 Review field is empty (또는 일종의)이. 나는 컨트롤러에서 var_dump($model->getErrors())으로 이것을 볼 수있다. $_POST['Author']['review']은 내가 준 값을 가지고 있지만 $model->review 열에 저장할 수 없습니다. CKEditor을 사용하고 있습니다. 그것없이 시도했지만 성공하지 않고.Yii2 양식 필드가 채워져도 공백으로 남음

echo '<div class="row">'; 
             echo '<div class="col-sm-12">'; 
              $textContent = 'review'; 
              if (!$model->isNewRecord) { 
               $model->$textContent = OutData::showTXT($model->$textContent); 
              } 
              echo $form->field($model, 'review')->textArea(); 
              echo "<script> 
                CKEDITOR.replace('Author[review]'); 
               </script>"; 
             echo '</div>'; 
            echo '</div>'; 

그리고 마지막으로 모델 규칙 :

public function rules() 
    { 
     $required = ['names', 'review', 'meta_desc', 'url', 'birthday', 'country_birth']; 

     return [ 
      [$required, 'required'], 
      [['active', 'sort'], 'required'], 
      ['names', 'string', 'max' => 255], 
      ['country_birth', 'string', 'max' => 255], 
      ['review', 'string'], 
      ['homeslider_review', 'string'], 
      ['meta_desc', 'string', 'max' => 170], 
      ['url', 'string', 'max' => 60], 
      [['active', 'sort'], 'integer'], 
      [['filename'], 'string'], 
     ]; 
    } 

다른 모든 필드는 적절한 방식으로 작동

public function actionUpdate($id) 
    { 
     $model = $this->findModel($id, true); 
     $settings = new Settings(); 
     if ($model->load(Yii::$app->request->post())) { 
      var_dump($model->save()); 
      var_dump($model->getErrors());die; 
      $languages = Lang::find()->all(); 
      foreach ($languages as $language) { 
       if ($language->default != 1) { 

        $names = 'names_' . $language->url; 
        $varNames = Yii::$app->OutData->sanitize($model->$names); 
        $model->$names = $varNames; 

        $review = 'review_' . $language->url; 
        $varReview = Yii::$app->OutData->sanitize($model->$review); 
        $model->$review = $varReview; 

        $metaDesc = 'meta_desc_' . $language->url; 
        $varMetaDesc = Yii::$app->OutData->sanitize($model->$metaDesc); 
        $model->$metaDesc = $varMetaDesc; 

        $url = 'url_' . $language->url; 
        $varUrl = Yii::$app->OutData->sanitize($model->$url); 
        $model->$url = $varUrl; 

        $cBirth = 'country_birth_' . $language->url; 
        $varcBirth = Yii::$app->OutData->sanitize($model->$cBirth); 
        $model->$cBirth = $varcBirth; 
       } 
       else 
       { 

        $model->names = Yii::$app->OutData->sanitize($model->names); 
        $model->review = Yii::$app->OutData->sanitize($model->review); 
        $model->meta_desc = Yii::$app->OutData->sanitize($model->meta_desc); 
        $model->url= Yii::$app->OutData->sanitize($model->url); 
        $model->country_birth = Yii::$app->OutData->sanitize($model->country_birth); 
       } 
      }  

      //записване на изображенията + thumb 
      if (isset($_POST["Author"]["imageFiles"]) and ! empty($_POST["Author"]["imageFiles"])) { 

       $model->imageFiles = UploadedFile::getInstances($model, 'imageFiles'); 
       if (isset($model->imageFiles) and count($model->imageFiles) > 0) { 
        foreach ($model->imageFiles as $key => $file) { 
         $parseProdTitle = MakeURL::parseImageName($model->names.'_'.$model->id); 
         $fileName = $parseProdTitle . '_' . $model->id . '.' . $file->extension; 
         $fileName = Yii::$app->translate->cyr_to_lat($fileName); 
         $model->filename = $fileName; 
         $model->update(); 
         $pic = Yii::getAlias('@frontend/web') . '/authors/thumb-270/' . $fileName; 
         $pic2 = Yii::getAlias('@frontend/web') . '/authors/' . $fileName; 
         $file->saveAs(Yii::getAlias('@frontend/web') . '/authors/' . $fileName); 
         $image = file_get_contents(Yii::getAlias('@frontend/web') . '/authors/' . $fileName); 
         file_put_contents($pic, $image); 
         $model->resizeImg($pic); 
         $settings->compress($pic, $pic, 90); 
         $settings->compress($pic2, $pic2, 90); 
        } 
       } 
      } 

      $model->update(); 

      return $this->redirect(['view', 'id' => $model->id]); 
     } else { 
      return $this->render('update', [ 
       'model' => $model, 
      ]); 
     } 
    } 

review 필드 뷰의 부분 : 여기 내 컨트롤러 . 이것은 유일한 반란군이다. 미리 감사드립니다.

답변

0

코드에서 모든 것이 정상입니다. 모델 유효성 검사를 원하지 않으면 컨트롤러에서 양식을 저장하는 곳에서이 모델을 사용해보십시오.

var_dump($model->save(false)); 

이가 문제를 해결하는 것입니다