swiftmailer & gridView

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
sapgv
Сообщения: 164
Зарегистрирован: 2013.05.27, 21:41

swiftmailer & gridView

Сообщение sapgv »

Всем привет.
Имеем модель Orders. В ней событие afterSave(), а в этом событии код (отправка заказа на почту):

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

        $products = Yii::$app->cart->getPositions();
        
        $searchModel = new ProductsCartSearch();
        $dataProvider = $searchModel->search($products);
        
        
        $grid = GridView::widget([
        'dataProvider' => $dataProvider,
        'layout' => "{items}",
        'showFooter'=>true,
        
        
        
        'tableOptions' => [
        'class'=>'table table-bordered',
        'id'=>'cart_table',
        ],
        
        'columns' => [
            [
        'class'  => 'yii\grid\SerialColumn',
        'header' => '№',
        'footer' => 'footer',
        ],
             
        ],
        ]);
        $message = Yii::$app->mail->compose('order',['order'=>$this]);
        
        $message->setFrom([Yii::$app->params['adminEmail']]);
        $message->setTo($order->email);
        $message->setHtmlBody($grid);
        $message->send();
        
Вот что приходит на почтовый клиент (The Bat например). Тут все хорошо.
bat.png
bat.png (53.41 КБ) 1715 просмотров
А вот что в хроме например.
mail.png
mail.png (22.66 КБ) 1715 просмотров
Футер съехал куда то наверх!
Посмотрим на код html в хроме
chrome.png
chrome.png (24.07 КБ) 1715 просмотров
Видим что в html 2 тега tbody, а про theader и tfooter ни слова.
Что я делаю не так ? и как победить ?
Аватара пользователя
sapgv
Сообщения: 164
Зарегистрирован: 2013.05.27, 21:41

Re: swiftmailer & gridView

Сообщение sapgv »

Решение нашел:
https://github.com/yiisoft/yii2/blob/ma ... idView.php
функция renderItems()

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

 $content = array_filter([
            $caption,
            $columnGroup,
            $tableHeader,
            $tableFooter,
            $tableBody,
        ]);
заменил на

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

$content = array_filter([
            $caption,
            $columnGroup,
            $tableHeader,
            $tableBody,
            $tableFooter,
        ]); 
Это так специально было сделано что футер выводился раньше боди ?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: swiftmailer & gridView

Сообщение zelenin »

Не смотрите в инспекторе - он показывает сгенерированное DOM-дерево. Оно будет разным для разных браузеров.
Всегда сомтрите то, на основе чего это сгенерировано - исходный код страницы. В нем вы увидите какие тэги не закрыты, и что привело к неправильному отображению. Скопируйте сюда.
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: swiftmailer & gridView

Сообщение mickgeek »

Mozilla Thunderbird и The Bat! всегда отображают письма максимально корректно. Используйте классические теги в своих письмах, избавьтесь от thead и tfoot, и, желательно, от tbody.

http://habrahabr.ru/post/252279/
Ответить