Задача: При добавлении записи, вносить данные в несколько таблиц. В одну таблицу вводится информация из пользовательских данных, в другую в основном статическая, кроме одного поля. В одной из моделей объявил переменную
public $text;
Во вьюшке добавил
<?= $form->field($model, 'text')->textarea(['rows' => '6']); ?>
Получается, что все данные из этой модели передаются, а в добавленное поле ничего не передается. Как сделать, чтобы в новое поле передавались данные?
Контроллер
public function actionCreate()
{
$model = new Helpdesk();
$model->status = 1;
$model->priority = 1;
$model->user_id = Yii::$app->user->identity['id'];
$model->addtime = date('Y-m-d H:i:s');
exit($model->text);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$answers = new HelpdeskAnswers();
$answers->user_id = Yii::$app->user->identity['id'];
$answers->user_id_agent = 0;
$answers->date = date('Y-m-d H:i:s');
$answers->text = $model->text;
$answers->helpdesk_id = $model->id;
$answers->save();
return $this->redirect(['my']);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
P.S. Не знаю как правильно составить заголовок
у вас в контроллере после сохранения модели исчезает экземпляр класса.
сделайте или так (сохранять основную модель после дополнительной):
public function actionCreate()
{
...
if ($model->load(Yii::$app->request->post())) { //сохранение было здесь
...
$answers->text = $model->text;
$answers->helpdesk_id = $model->id;
$answers->save();
//сохранение основной модели после сохранения другой
$model->save();
return $this->redirect(['my']);
}
return $this->render('create', [
'model' => $model,
]);
}
или так (записывать значения основной модели в переменные и сохранять ее):
public function actionCreate()
{
...
$id = $model->id;
$text = $model->text;
if ($model->load(Yii::$app->request->post()) && $model->save()) { //здесь оно так и осталось
...
$answers->text = $text;
$answers->helpdesk_id = $id;
$answers->save();
return $this->redirect(['my']);
}
return $this->render('create', [
'model' => $model,
]);
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости