[ 'class' => 'yii\web\ErrorAction', ], ]; } /** * @inheritdoc */ public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'feedback' => [ 'post' ], ], ], ]; } /** * Displays homepage. * * @return mixed */ public function actionIndex() { return $this->render('index'); } /** * Displays contact page. * * @return mixed */ public function actionContact() { $contact = new Feedback(); return $this->render( 'contact', [ 'contact' => $contact, ] ); } /** * Displays about page. * * @return mixed */ public function actionAbout() { return $this->render('about'); } /** * Action to view robots.txt file dinamycli * * @return string */ public function actionRobots() { $response = \Yii::$app->response; /** * @var Settings $settings */ $settings = Settings::find() ->one(); $temp = tmpfile(); fwrite($temp, $settings->robots); $meta = stream_get_meta_data($temp); $response->format = $response::FORMAT_RAW; $response->headers->set('Content-Type', 'text/plain'); return $this->renderFile($meta[ 'uri' ]); } public function actionFeedback() { Yii::$app->response->format = Response::FORMAT_JSON; if (empty(Yii::$app->request->post())) { throw new BadRequestHttpException(); } else { $model = new Feedback(); if ($model->load(Yii::$app->request->post()) && $model->save()) { $this->sendFeedback($model); return [ 'success' => true, 'message' => 'Success message', 'alert' => '

Success

Success text

', ]; } else { return [ 'success' => false, 'error' => $model->errors, ]; } } } protected function sendFeedback(Feedback $model) { $settings = Settings::getInstance(); require_once '../../vendor/phpmailer/phpmailer/PHPMailerAutoload.php'; $mail = new \PHPMailer(); //$mail->SMTPDebug = 3; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'hugeloginnamefortest@gmail.com'; // SMTP username $mail->Password = 'hugepasswordfortest'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to $mail->setFrom('total-automation@mailer.com', 'Mailer'); $mail->addAddress($settings->email); // Add a recipient $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Отзыв'; $mail->Body = $this->renderPartial('mail', [ 'model' => $model, ]); $mail->send(); } }