Передача поля, которого нет в модели yii2

153
03 апреля 2019, 20:20

Задача: При добавлении записи, вносить данные в несколько таблиц. В одну таблицу вводится информация из пользовательских данных, в другую в основном статическая, кроме одного поля. В одной из моделей объявил переменную

 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. Не знаю как правильно составить заголовок

Answer 1

у вас в контроллере после сохранения модели исчезает экземпляр класса.

сделайте или так (сохранять основную модель после дополнительной):

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,
    ]);
}
READ ALSO
Лучшие API для работы с погодой PHP [закрыт]

Лучшие API для работы с погодой PHP [закрыт]

Задача стоит в том, чтобы сделать чат-бота который по городу будет возвращать погоду на сегодняПодскажите, пожалуйста, достойные API для данной...

145
Не загружается файл на сервер!

Не загружается файл на сервер!

На форме есть <input type="file">Форма имеет атрибут enctype="multipart/form-data" и method="post"

122
COUNT() и SUM() в одном запросе с GROUP BY. yii2

COUNT() и SUM() в одном запросе с GROUP BY. yii2

нужно сделать в одном запросе count и sumзапрос примерно такой:

130
Как закрыть чат-окно ботом на facebook?

Как закрыть чат-окно ботом на facebook?

Пишу бота на PHP и возник вопрос, а можно ли закрыть диалоговое окно после определенной команды? Чтобы после ответа клиента бот закрывал каким...

170