Важная информация
Показано с 1 по 2 из 2

Тема: Отправка почты на yii2

  1. #1 Отправка почты на yii2 
    Новичок
    Регистрация
    09.10.2018
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Добрый день . Делаю магазин на yii2. Не могу отправить данные из кнопки input в письмо через swiftmailer. Сама отправка почты работает нормально. А вот хочу из input вставить в письмо в поределённое место не получается помогите плиз.
    Вот основные тексты:

    CartController.php :

    PHP Code:
    1. <?php
    2.     public function actionView(){
    3.         $session = Yii::$app->session;
    4.         $session->open();
    5.         $this->setMeta('Корзина');
    6.         $order = new Order();
    7.         if ($order->load(Yii::$app->request->post())) {
    8.         $order->qty = $session['cart.qty'];
    9.         $order->sum = $session['cart.sum'];
    10.  
    11.         if ($order->save()) {
    12.             $this->saveOrderItems($session['cart'], $order->id);
    13.             Yii::$app->session->setFlash('success', 'Ваш заказ принят. Менеджер вскоре свяжется с Вами.');
    14.             Yii::$app->mailer->compose('order', ['session' => $session])
    15.                 ->setFrom(['[Ссылки могут видеть только зарегистрированные пользователи. ]'])
    16.                 ->setTo($order->email)
    17.                 ->setSubject('Заказ')
    18.                 ->setTextBody('Текст сообщения')
    19.                 ->send();
    20.             $email = $oder->email;
    21.  
    22.             echo"$email";
    23.  
    24.             Yii::$app->mailer->compose('order', ['session' => $session])
    25.                 ->setFrom(['[Ссылки могут видеть только зарегистрированные пользователи. ]'])
    26.                 ->setTo('[Ссылки могут видеть только зарегистрированные пользователи. ]')
    27.                 ->setSubject('Заказ')
    28.                 ->send();
    29.  
    30.  
    31.             $session->remove('cart');
    32.             $session->remove('cart.qty');
    33.             $session->remove('cart.sum');
    34.             return $this->refresh();
    35.         } else {
    36.             Yii::$app->session->setFlash('error', 'Ошибка оформления заказа');
    37.         }
    38.     }
    39.     return $this->render('view', [Ссылки могут видеть только зарегистрированные пользователи. ]('session', 'order',['order' => $order]));
    40. }
    41. ?>


    в папке mail - order.php:

    PHP Code:
    1. <?php
    2.     use yii\helpers\Html;
    3. ?>
    4.  
    5. <div class="table-responsive">
    6.     <table style="width: 100%; border: 1px solid #ddd; border-collapse: collapse;">
    7.         <thead>
    8.         <tr style="background: #f9f9f9;">
    9.             <th style="padding: 8px; border: 1px solid #ddd;">Наименование</th>
    10.             <th style="padding: 8px; border: 1px solid #ddd;">Кол-во</th>
    11.             <th style="padding: 8px; border: 1px solid #ddd;">Цена</th>
    12.             <th style="padding: 8px; border: 1px solid #ddd;">Сумма</th>
    13.         </tr>
    14.         </thead>
    15.         <tbody>
    16.         <?php foreach($session['cart'] as $id => $item):?>
    17.         <tr>
    18.             <td style="padding: 8px; border: 1px solid #ddd;"><?= $item['name']?></td>
    19.             <td style="padding: 8px; border: 1px solid #ddd;"><?= $item['qty']?></td>
    20.             <td style="padding: 8px; border: 1px solid #ddd;"><?= $item['price']?></td>
    21.             <td style="padding: 8px; border: 1px solid #ddd;"><?= $item['qty'] * $item['price']?></td>
    22.         </tr>
    23.         <?php endforeach?>
    24.         <tr>
    25.             <td colspan="3" style="padding: 8px; border: 1px solid #ddd;">Итого: </td>
    26.             <td style="padding: 8px; border: 1px solid #ddd;"><?= $session['cart.qty']?></td>
    27.         </tr>
    28.         <tr>
    29.             <td colspan="3" style="padding: 8px; border: 1px solid #ddd;">На сумму: </td>
    30.             <td style="padding: 8px; border: 1px solid #ddd;"><?= $session['cart.sum']?></td>
    31.         </tr>
    32.         </tbody>
    33.  
    34.         <thead>
    35.         <tr style="background: #f9f9f9;">
    36.             <th style="padding: 8px; border: 1px solid #ddd;">Телефон</th>
    37.             <th style="padding: 8px; border: 1px solid #ddd;">Емаил</th>
    38.  
    39.         </tr>
    40.         </thead>
    41.         <tbody>
    42.         <?php
    43.         //if ($order->load(Yii::$app->request->post()) && $order->validate()) {
    44.         // выполнение кода, если данные введены правильно
    45.         // иначе будет показа ошибка (Yii выводит ошибки автоматически)
    46.         // $email=$order->email; // используется вместо $_POST['name']
    47.         //}
    48.         ?>
    49.         <tr>
    50.             <td style="padding: 8px; border: 1px solid #ddd;"><?= $order->email?></td>
    51.             <td style="padding: 8px; border: 1px solid #ddd;"><?php echo"$email"; ?></td>
    52.         </tr>
    53.         <?php //endforeach?>
    54.         </tbody>
    55.     </table>
    56. </div>



    в папке views/cart/view.php:

    PHP Code:
    1. <?php
    2. use yii\helpers\Html;
    3. use yii\helpers\Url;
    4. use yii\widgets\ActiveForm;
    5. ?>
    6. <div class="container">
    7.  
    8.     <?php
    9.     $email = $oder->email;
    10.     echo"$email";
    11.     if ([Ссылки могут видеть только зарегистрированные пользователи. ]($order->addres)) {
    12.         $email = $order->addres;
    13.         echo"$email";
    14.  
    15.     } else {
    16.         $Err.="Ошибка передачи данных с поля id!<br>";
    17.         echo"ошибка";
    18.     }?>
    19.  
    20.     <?php if( Yii::$app->session->hasFlash('success') ): ?>
    21.         <div class="alert alert-success alert-dismissible" role="alert">
    22.             <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    23.             <?php echo Yii::$app->session->getFlash('success'); ?>
    24.         </div>
    25.     <?php endif;?>
    26.  
    27.     <?php if( Yii::$app->session->hasFlash('error') ): ?>
    28.         <div class="alert alert-danger alert-dismissible" role="alert">
    29.             <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    30.             <?php echo Yii::$app->session->getFlash('error'); ?>
    31.         </div>
    32.     <?php endif;?>
    33.     <?php if(![Ссылки могут видеть только зарегистрированные пользователи. ]($session['cart'])): ?>
    34.         <div class="table-responsive">
    35.             <table class="table table-hover table-striped">
    36.                 <thead>
    37.                 <tr>
    38.                     <th>Фото</th>
    39.                     <th>Наименование</th>
    40.                     <th>Кол-во</th>
    41.                     <th>Цена</th>
    42.                     <th>Сумма</th>
    43.                     <th><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></th>
    44.                 </tr>
    45.                 </thead>
    46.                 <tbody>
    47.                 <?php foreach($session['cart'] as $id => $item):?>
    48.                 <tr>
    49.                     <td><?= \yii\helpers\Html::img("@web/images/products/{$item['img']}", ['alt' => $item['name'], 'height' => 50]) ?></td>
    50.                     <td><a href="<?= Url::to(['product/view', 'id' => $id])?>"><?= $item['name']?></a></td>
    51.                     <td><?= $item['qty']?></td>
    52.                     <td><?= $item['price']?></td>
    53.                     <td><?= $item['qty'] * $item['price']?></td>
    54.                     <td><span data-id="<?= $id?>" class="glyphicon glyphicon-remove text-danger del-item" aria-hidden="true"></span></td>
    55.                 </tr>
    56.                 <?php endforeach?>
    57.                 <tr>
    58.                     <td colspan="5">Итого: </td>
    59.                     <td><?= $session['cart.qty']?></td>
    60.                 </tr>
    61.                 <tr>
    62.                     <td colspan="5">На сумму: </td>
    63.                     <td><?= $session['cart.sum']?></td>
    64.                 </tr>
    65.                 </tbody>
    66.             </table>
    67.         </div>
    68.         <hr/>
    69.         <?php
    70.         $form = ActiveForm::begin([
    71.             'id' => 'login-form',
    72.             'options' => ['class' => 'form-horizontal'],
    73.         ]) ?>
    74.             <?= $form->field($order, 'name')?>
    75.             <?= $form->field($order, 'email') ?>
    76.             <?= $form->field($order, 'phone')?>
    77.             <?= $form->field($order, 'address')?>
    78.             <?= Html::submitButton('Заказать', ['class' => 'btn btn-success'])?>
    79.         <?php ActiveForm::[Ссылки могут видеть только зарегистрированные пользователи. ]()?>
    80.     <?php else: ?>
    81.         <h3>Корзина пуста</h3>
    82.     <?php endif;?>
    83. </div>


    То есть код передачи данных из кнопки input в письмо.
    Последний раз редактировалось rovico; 10.10.2018 в 10:21. Причина: Просьба оформлять куски кода так, чтобы они были читаемыми
    Ответить с цитированием  
     

  2. #2  
    Профи Аватар для rovico
    Регистрация
    17.04.2014
    Адрес
    Ярославль
    Сообщений
    245
    Сказал(а) спасибо
    17
    Поблагодарили 287 раз(а) в 162 сообщениях
    Записей в блоге
    2
    Разобрался или нет? Вчера ответить не успел.

    Видимо, отправка письма должна происходить после отправки заказа (Нажатие кнопки "Заказать" в форме).

    И мне кажется, что не работает строчка
    PHP Code:
    1. if ($order->load(Yii::$app->request->post())) {


    Скорее всего Yii записывает данные передаваемого запроса в bodyParams или queryParams
    PHP Code:
    1. $queryParams = Yii::$app->getRequest()->getQueryParams();
    2. $bodyParams = Yii::$app->getRequest()->getBodyParams();


    На крайняк всегда можно понять, что данные из формы пришли написав
    PHP Code:
    1. Yii::$app->getRequest()->getRawBody()
    Ответить с цитированием  
     

  3. Пользователь сказал cпасибо:

    Free Admin (10.10.2018)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее сообщение: 20.08.2017, 12:13
  2. AJAX отправка переменной из JS в PHP
    от Natalia Chistyakova в разделе PHP
    Ответов: 2
    Последнее сообщение: 12.11.2016, 15:24
  3. Как разделить ajax запросы, создаваемые при помощи jquery в yii2?
    от Андрей76 в разделе Общие вопросы программирования
    Ответов: 0
    Последнее сообщение: 05.05.2016, 22:06
  4. libCURL и отправка писем
    от stabud в разделе Общие вопросы программирования
    Ответов: 3
    Последнее сообщение: 01.07.2015, 09:51
  5. Отправка в чат сообщений
    от Amir в разделе JavaScript
    Ответов: 1
    Последнее сообщение: 03.10.2013, 21:34
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •