model-> атрибуты в Yii2 всегда имеют значение NULL

У меня есть временная модель как viewModel. В моих действиях CRUD (например actionCreate) я хочу получить данные viewModel и назначить их модели ActiveRecord. Я использовал ниже код, но мой атрибут объекта atrribute всегда показывает значение NULL для атрибутов:

$model = new _Users(); if ($model->load(Yii::$app->request->post())) { Yii::info($model->attributes,'test'); // NULL $attributesValue =[ 'title' => $_POST['_Users']['title'], 'type' => $_POST['_Users']['type'], ]; $model->attributes = $attributesValue; Yii::info($model->attributes,'test'); // NULL $dbModel = new Users(); $dbModel->title = $model->title; $dbModel->type = $model->type . ' CYC'; // CYC is static type code Yii::info($dbModel->attributes,'test'); // NULL if ($dbModel->save()) { return $this->redirect(['view', 'id' => $dbModel->id]); // Page redirect to blank page } } else { return $this->render('create', [ 'model' => $model, ]); } 

Я думаю, что $ model-> load (Yii :: $ app-> request-> post ()) не работает, а атрибут объекта – NULL. Это ошибка Yii2 или неправильный код?

Если для вашего атрибута нет правила, то $model->load() будет игнорировать те, которые не соответствуют правилам модели.

Добавьте свои атрибуты в функцию правил

 public function rules() { return [ ... [['attribute_name'], 'type'], ... ]; } 

Чтобы получить данные для отдельных атрибутов (db-fields) в yii2.0, вы должны просто сделать так:

 echo $yourModel->getAttribute('email'); 

$attributes ActiveRecord $attributes являются частной собственностью. Используйте $model->getAttribute(string)

Вы можете использовать следующие коды:

 $model = new _Users(); $model->attributes=Yii::$app->request->post('_Users'); $model->title= $model->title $model->type = $model->type . ' CYC'; // CYC is static type code #$model->sampleAttribute='Hello World'; 

Вы должны удалить все общедоступные свойства ( название, тип и т. Д.) В своей модели _User а _User $model->attributes = $post будет работать правильно.

Я также столкнулся с той же проблемой, я добавлю свои атрибуты в функцию правил, но также и ошибку. И я нашел причину этой проблемы. Это связано с тем, что имя формы отправки в соответствующем файле представления не совпадает с именем модели, которое вы используете в контроллере

 [controller file]: $model=new SearchForm(); [view file]: <input name="SearchForm[attribus]" ... or [view file]: <?= $form->field($model,'atrribus')->textInput()?>