업데이트 양식이 있는데 하나의 예외는 있지만 예상대로 작동합니다. review
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
필드 뷰의 부분 : 여기 내 컨트롤러 . 이것은 유일한 반란군이다. 미리 감사드립니다.