riaron писал(а): ↑2020.03.03, 21:09
Почта отправляется из views atddd
Доступы убери из публичного сообщения. Надо было в личку написать, на крайний случай.
Поменяй в конфиге на такое.
Может не работать не потому, что не правильно настроена отправка. Как вариант сохранение не прошло либо еще какой косяк.
Почему почта отправляется через представление? Что насчет MVC?
Представление для отображения информации. Отправка почты должна быть через модель.
Логика:
На представлении есть кнопка (action). Мы нажимаем на неё, дальше наш контроллер выполняет action, в котором сказано "Вот такая модель NewModel и из неё нужно выполнить метод sendMail". Модель выполняет действия и возвращает результат, например, true|false чтобы понимать прошла отправка успешно или нет. При true выводить дополнительно в представление сообщение об успешной отправке письма.
В контроллере
Код: Выделить всё
$model = new NewModel;
if($model->sendMail()){
//flash сообщение
}
return $this->render('your_view_file');
В модели NewModel
Код: Выделить всё
public function sendMail(){
//тут магия отправки
}
Все манипуляции с моделями хорошо бы делать в модели (в твоем случае в Onjob). Только не понятно какая модель Onjob у тебя используется. Какой-то конкретной не увидел. Для создания НОВОЙ записи можно так сделать.
Код: Выделить всё
$orders=Orders::findOne($id);
$onjob= new Onjob;
$onjob->name = $orders->name;
$onjob->problem = $orders->problem;
$onjob->phone = $orders->phone;
$onjob->date = $orders->date;
$onjob->text = $orders->text;
$onjob->date1 = date('G:i:s Y:m:d');
$onjob->save(false);
Все что ты сделал вот тут
Код: Выделить всё
$request=Yii::$app->request;
global $user; //не увидел использование
$id=$request->get('id'); //думаю и тут можно сделать что-то, просто не вижу всей картины в целом
$date=date('G:i:s Y:m:d'); //используется 1 раз, а значит можно перенести в нужное место, чтоб не плодить строки кода (смотри вверху)
$orders=Orders::find()->where(['id'=>$id])->one(); //это можно сократить (вверху) при условии, что id это первичный ключ
P.S.
Переноси логику в разные места, чтобы можно было отследить где и что не работает. Перенос логики в разные места, а именно распределение её туда, где она должна быть поможет тебе в расширяемости кода и использовании его в других местах.
Например, отправка почты. Сделал в отдельной модели отправку и передаешь в неё нужные параметры. Можно использовать хоть в 10ти местах без дублирования кода отправки, только передаешь нужные параметры.