Поле формы Yii2 остается пустым даже при заполнении

У меня есть форма обновления, которая работает, как и ожидалось, с одним исключением — review textarea не хочет проходить через правила проверки. Когда я заполняю его и пытаюсь обновить форму, я получаю Review field is empty (или вроде этого). Я могу видеть это с var_dump($model->getErrors()) в контроллере. $_POST['Author']['review'] получил значение, которое я дал, но не могу сохранить его в $model->review колонка.
я использую CKEditor, Пробовал без этого но безуспешно. Вот мой контроллер:

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 поле:

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'],
];
}

Все остальные поля работают должным образом. Это единственный бунтарь. Заранее спасибо!

2

Решение

В вашем коде все в порядке. Если вы не хотите проверять модель, попробуйте это в своем контроллере, где вы сохраняете форму.

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

Это решит вашу проблему

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector