@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Как отправить в модель значение имени из DropDownlist вместо ID?

В общем при обработке заказа в зависимости от отделения доступен определённый список врачей.

<?= $form2->field($modelC, 'doctor')->dropDownList(ArrayHelper::map(\app\modules\admin\models\Doctors::find()->where(['category_id' => $model->category_id])->all(), 'id','name'),['style'=>'font-family: \'Exo 2\', sans-serif; color: #0f0f0f; font-size:17px'])->label('Врач')?>


Всё прекрасно работает и показывает врачей только по текущему заказу. Но в модель попадает не имя врача, а id. И на почту идёт ID. Как сделать чтобы вместо id приходило имя врача?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
При формировании письма получить по id Ф.И.О врача и отправить.
Как Вы делаете отправку письма, показывайте.
Как Вы оформили шаблон письма?

p.s.
Вы получаете из формы id доктора. По этому id можно получить из базы все данные о враче, не только имя, но и дополнительную какую-то информацию. Например часы приёма этого врача на месяц вперёд.
public function getDoctor($id)
{
    return Doctor::find()->where('id=:id', [':id' => $id])->one();
}

public function contact($email)
    {
        if ($this->validate()) {
            Yii::$app->mailer->compose('order', [
                'date' => $this->date,
                'time' => $this->time,
                'doctor' => $this->getDoctor($this->doctor),
                'name' => $this->name
            ])
                ->setTo([$this->email])
                ->setFrom([$email =>$this->subject])
                ->setSubject('Подтвержение заказа')
                ->send();

            return true;
        }
        return false;
    }

А в самом представлении order можно уже разобрать doctor на атрибуты
// подставьте свои значения вместо name, patronymic, surname
echo "Врач: " . $doctor->name . ' ' . $doctor->patronymic . ' ' . $doctor->surname

Это на скорую руку, всё это можно улучшить. Можно дополнить, например, методом, который будет собирать Ф.И.О или распорядок работы или ещё что-то интересное для пациента. Всё это передавать в вид письма и оформлять соответствующим образом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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