Данные из формы не отправляются на почту и не сохраняются в БД

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение Kven »

Всем здравствуйте! Обращаюсь со следующей проблемой, имеется следующий экшен, суть данного экшена сохранять данные из формы в БД и отправлять письмо пользователю с вложением на емайл указанный в форме. В итого при выполнении данного экшена, у меня просто перезагружается страница и ничего не сохраняется, и не отправляется.

Код: Выделить всё

    public function actionPdf()
    {
        $session = Yii::$app->session;
        $session->open();
        $model = Goods::find()->all();
        $client = new Requests();
        $content = Yii::$app->view->renderFile('@app/views/goods/catalogue.php', ['model'=>$model]);

        $pdf = new Pdf([
            'mode' => Pdf::MODE_UTF8,
            'format' => Pdf::FORMAT_A4,
            'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.css',
            'orientation' => Pdf::ORIENT_PORTRAIT, 
            'destination' => Pdf::DEST_BROWSER,
            'content' => $content,
            'options' => ['title' => '123'],
        ]);

        $fileName = md5(time()) . '.pdf';
        $filePath = Yii::getAlias('@app/web/upload/goods/pdf/' . $fileName);

        $attachment =  $pdf->output($content, $filePath, Pdf::DEST_FILE);

        if($client->load(Yii::$app->request->post()) && $client->validate()){
            if($client->save()){
                Yii::$app->session->setFlash('success', 'Спасибо за Ваше обращение!');
                Yii::$app->mailer->compose()
                    ->setFrom([Yii::$app->params['adminEmail'] => 'Электромобили'])
                    ->setTo($client->email)
                    ->setSubject('123')
                    ->attach($filePath)
                    ->send();
                return $this->refresh();
            }else{
                Yii::$app->session->setFlash('error', 'Ошибка! Возможно Вы не заполнили одно из полей!');
            }
        }
        unlink($filePath);
        return $this->redirect(Yii::$app->request->referrer);
    }
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Re: Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение slo_nik »

Доброй ночи.
Пока два варианта, или не прописаны атрибуты в rules() модели, или всё-таки не проходит валидацию
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение Kven »

Атрибуты у меня прописаны, вроде бы все правильно. А как проверить на валидацию?

Код: Выделить всё

public function rules()
{
    return [
        [['name', 'phone'], 'required'],
        [['created_at'], 'safe'],
        [['email'], 'email'],
        [['type'], 'string'],
        [['name', 'phone'], 'string', 'max' => 100],
    ];
}
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение someweb »

Код: Выделить всё

                return $this->refresh();
            }else{
                Yii::$app->session->setFlash('error', 'Ошибка! Возможно Вы не заполнили одно из полей!');
            }
        }
        unlink($filePath);
        Yii::$app->session->setFlash('error', print_r($client->errors, true));
        return $this->redirect(Yii::$app->request->referrer);
    }
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение Kven »

Выводит Array(). Я так понимаю что данные из формы не передаются.
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение someweb »

Похоже на то.
Кстати, после validate лучше вызывать save(false), что бы два раза не валидировать.
И Yii::$app->session->setFlash('error', 'Ошибка! Возможно Вы не заполнили одно из полей!') у вас как бы намекает ошибку валидации, но по факту эта строчка никогда не сработает.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Kven
Сообщения: 112
Зарегистрирован: 2016.10.20, 23:03

Re: Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение Kven »

Немного моя проблема все же сдвинулась с места. Может кто сможет подсказать, почему возникает следующая ошибка при отправке почты:

Код: Выделить всё

Unable to open file for reading [/home/b/kven/мой домен/public_html/web/upload/goods/pdf/price.pdf]

Код: Выделить всё

public function actionIndex()
{
    $session = Yii::$app->session;
    $session->open();
    $model = new Requests();
    $catalogue = Goods::find()->all();
    $content = Yii::$app->view->renderFile('@app/views/goods/catalogue.php', ['model'=>$catalogue]);

    $pdf = new Pdf([
        'mode' => Pdf::MODE_UTF8,
        'format' => Pdf::FORMAT_A4,
        'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.css',
        'orientation' => Pdf::ORIENT_PORTRAIT, 
        'destination' => Pdf::DEST_BROWSER,
        'content' => $content,
        'options' => ['title' => '123'],
    ]);

    $fileName = 'price' . '.pdf';
    $filePath = Yii::getAlias('@webroot/upload/goods/pdf/' . $fileName);

    if($model->load(Yii::$app->request->post()) && $model->validate()){
        if($model->save()){
            Yii::$app->session->setFlash('success', 'Спасибо за Ваше обращение!');
            $result =  Yii::$app->mailer->compose()
                ->setFrom([Yii::$app->params['adminEmail'] => '123])
                ->setTo($model->email)
                ->setSubject('Каталог')
                ->attach($filePath)
                ->send();
        }
        unlink($filePath);
    }
    return $this->render('index', compact('session', 'model'));
}
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Данные из формы не отправляются на почту и не сохраняются в БД

Сообщение someweb »

А где сохранение Pdf в файл?
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Ответить