Ballly
@Ballly

Как передать данные отправителя при отправке формы?

Всем здравствуйте! Имеется две модели Feedback и Persons, в БД есть только таблица Persons - эта модель служит для выбора имени отправителя сообщения в форме. Связать две модели между собой у меня не получилось, так как модель feedback не имеет таблицы в БД. Подскажите, как сделать так, чтобы передать в setFrom имя и емайл отправителя, которые содержаться в таблице Persons?
<?php $form = ActiveForm::begin(); ?>

                <?= $form->field($feedback, 'sender')->dropDownList(\yii\helpers\ArrayHelper::map(Persons::find()->asArray()->all(), 'id', 'name'), ['prompt' => ' ']) ?>

                <?= $form->field($feedback, 'text')->textarea(['rows' => 6]) ?>

                <div class="form-group">
                    <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
                </div>

            <?php ActiveForm::end(); ?>

public function actionView($login)
    {
        $model = Persons::findOne($login);
        $feedback = new Feedback();
        if ($feedback->load(Yii::$app->request->post()) && $feedback->contact($model['mail'])) {
            Yii::$app->session->setFlash('success', 'Ваше сообщение отправлено');
            return $this->refresh();
        }
        return $this->render('view', compact('model', 'feedback'));
    }

public function contact($email)
    {
        if ($this->validate()) {
            Yii::$app->mailer->compose()
                ->setTo($email)
                ->setFrom([Yii::$app->params['senderEmail'] => Yii::$app->params['senderName']])
                ->setSubject('Форма обратной связи')
                ->setHtmlBody($this->text)
                ->send();

            return true;
        }
        return false;
    }
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Не надо передавать ничего кроме id который вы уже передали. Просто в обработчике формы, когда получаете ее найдите Person по id и оттуда получите все что вас интересует.
ПС: не птихайте в дропдаун выборку всех Персонов. А если их там 30k или 58М? Сделайте автокомплит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы