@Aleksandr90

Отправка почты activeformi yii2 ajax не получается?

Подскажите где я ошибаюсь надо отправить емаил через формы с ajaxom
это код формы
<?php $form = ActiveForm::begin(['id' => 'form'],['contact' => 'form']); ?>
                        <div class="col-md-4"> <?= $form->field($model, 'name')->textInput(['autofocus' => true, 'placeholder' => 'Ad'])->label(false) ?></div>
                        <div class="col-md-4"><?= $form->field($model, 'email')->textInput(['placeholder' => 'E-mail'])->label(false) ?></div>
                        <div class="col-md-4"><?= $form->field($model, 'subject')->textInput(['placeholder' => 'Telefon'])->label(false) ?></div>
                        <div class="col-md-12"><?= $form->field($model, 'body')->textarea(['rows' => 6 , 'placeholder' => 'Mesaj yaz'])->label(false) ?></div>
                        <div class="col-md-12">

                            <input type="test"  name="test1" value="999" method="post">
                            <input type="test1" name="test2" value="978" method="post">
                            <input type="test2" name="test3" value="87" method="post">
                            <input type="test3" name="test4" value="87" method="post">
                            <div class="form-group">
                                <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
                            </div>
                        </div>
                        <?php ActiveForm::end(); ?>
                    </div>
            </div>
        </div>
    </div>
</div>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {

                var infoMail = $('.info-mail');
                $('#form').on('beforeSubmit', function(e){
                    e.preventDefault();
                    var form = $(this);
                    $.ajax({
                        url: "site/Sendmail",
                        method: "POST",
                        data: form.serialize(),
                        type: 'json',
                        success: function (result) {
                            var newarr = $.parseJSON(result);
                            console.log("результат " + newarr.success);
                            if (newarr.success) {
                                infoMail.find('ul').append('<li> Ваше сообщение отправлено! </li>');
                                infoMail.slideDown();
                                $('#form').trigger('reset'); //очистка формы
                            } 
                        }
                    });
                    
                   return false;
                });
               
            });
</script>

url : что написать надо ? action controllera ?
это модел contacta формы чтота добавить надо ?
public function sendEmail($email)
    {
        return Yii::$app->mailer->compose()
            ->setTo($this ->email)
            ->setFrom([$this->email => $this->name])
            ->setSubject($this->subject)
            ->setTextBody($this->body)
            ->send();
    }
}

это контроллер
public function actionContact()
    {
        $model = new ContactForm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
                Yii::$app->session->setFlash('success', 'Müraciətiniz üçün təşəkkür edirik');
            } else {
                Yii::$app->session->setFlash('error', 'Gözlənilməz xəta baş verdi');
            }

            return $this->refresh();
        } else {
            return $this->render('contact', [
                'model' => $model,
            ]);
        }
    }
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 3
@BorisKorobkov
Web developer
E-mail отправляется не из формы, а с сервера. Поэтому сначала на сервере надо получить данные из формы.
RTFM https://github.com/yiisoft/yii2/blob/master/docs/g...
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Смотрите debug панель, там видно отправилась ли почта и что вернул сервер. Boris Korobkov прав, скорее всего дело в настройках сервера, кроме этого надо проверить настройки swiftMailer в конфиге приложения.
Ответ написан
@Aleksandr90 Автор вопроса
писмо отправлается но данные инпута нет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы