2017-09-12 8 views
2

textareaは妥当性検査のルールを渡すことができません。私はそれを記入し、私が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

あなたのコードではすべてがOKです。モデルを検証したくない場合は、あなたのフォームを保存しているコントローラでこのモデルを試してみてください。

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

これはあなたの問題を解決します

関連する問題