Как сохранить иконки ссылок шаблона в YII2

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

Как сохранить иконки ссылок шаблона в YII2

Сообщение svil »

Есть ссылка в view/layouts/main.php

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

<li><a href="#"><i class="fa fa-shopping-cart"></i> Корзина</a></li>
с изображением иконки корзины, при клике на которую показывается содержимое корзины. Пришлось ее переделать :

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

<li><?= Html::a('<i>Корзина</i>', ['cart/show'], ['class' => 'fa fa-shopping-cart']) ?></li>
чтобы при клике на любой странице сайта появлялось модальное окно с корзиной. Код в web/js/main.js :

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

$('.fa-shopping-cart').on('click', function (e){
    url = e.currentTarget.href; // Линк берем из ссылки
    $.ajax({
       // url: './cart/show',
        url: url,
        type: 'GET',
        success: function(res){
            if(!res) alert('Ошибка!');
            showCart(res);
        },
        error: function(){
          //  getCart2();
            alert('Error!');
        }
    });
    return false;
}); 
Модальное окно с корзиной работает, но исчезла иконка с корзиной в самой ссылке . Как отредактировать код ссылки, чтобы сохранить иконку с корзиной?
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение Dominus »

То есть у вас после ajax запроса пропадает иконка корзины из ссылки, или иконка в ссылке совсем пропала?
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение svil »

Вот так иконки есть(2 работающих варианта), но какая то ненужная иконка появляется непонятной формы:

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

 <li><?= Html::a('<i class="fa fa-shopping-cart"></i> Корзина',['cart/show'], ['class' => 'fa fa-shopping-cart', 'title' => 'Корзина']) ?></li>

  <li><?= Html::a(Html::tag('i', '', ['class' => 'fa fa-shopping-cart']) . ' Корзина',['cart/show'], ['class' => 'fa fa-shopping-cart', 'title' => 'Корзина']) ?></li>
Два раза before при просмотре. Что то лишнее...
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение Dominus »

А в ответе на ajax запрос что приходит?
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение Dominus »

смотрите функцию showCart(res); по коду понятно что она отрисовывает html
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение svil »

Иконки есть, но перед ними ненужная непонятной формы другая иконка
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение Dominus »

В исходном коде страницы посмотрите что это за иконка
И глянуть бы код функции showCart()
Лишний класс уберите из ссылки.Так должно быть

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

<?= Html::a('<i class="fa fa-shopping-cart"></i> Корзина',['cart/show'], ['class' => 'link-shoping-cart', 'title' => 'Корзина']) ?>
<?= Html::a(Html::tag('i', '', ['class' => 'fa fa-shopping-cart']) . ' Корзина',['cart/show'], ['class' => 'link-shoping-cart', 'title' => 'Корзина']) ?>
И в функции события замените

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

$('.fa-shopping-cart').on('click', function (e){
   //...
});  
на

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

$('.link-shoping-cart').on('click', function (e){
    //...
}); 
или убирайте тэг <i> из ссылки
Последний раз редактировалось Dominus 2018.05.21, 14:41, всего редактировалось 1 раз.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение svil »

Без лишнего класса исчезает модальное окно и просто информация из корзины появляется

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

public function actionShow(){
        $session =Yii::$app->session;
        $session->open();
        $this->layout = false;
        return $this->render('cart-modal', compact('session'));
    }
Модальное окно

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

<?php if(!empty($session['cart'])): ?>
    <div class="table-responsive">
        <table class="table table-hover table-striped">
            <thead>
            <tr>
                <th>Фото</th>
                <th>Наименование</th>
                <th>Кол-во</th>
                <th>Цена</th>
                <th><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></th>
            </tr>
            </thead>
            <tbody>
            <?php foreach($session['cart'] as $id => $item):?>
                <tr>
                    <td><?= \yii\helpers\Html::img("@web/images/products/{$item['img']}", ['alt' => $item['name'], 'height' => 50]) ?></td>
                    <td><?= $item['name']?></td>
                    <td><?= $item['qty']?></td>
                    <td><?= $item['price']?></td>
                    <td><span data-id="<?= $id?>" class="glyphicon glyphicon-remove text-danger del-item del-item-view-product" aria-hidden="true"></span></td>
                </tr>
            <?php endforeach?>
            <tr>
                <td colspan="4">Итого: </td>
                <td><?= $session['cart.qty']?></td>
            </tr>
            <tr>
                <td colspan="4">На сумму: </td>
                <td><?= $session['cart.sum']?></td>
            </tr>
            </tbody>
        </table>
    </div>
<?php else: ?>
    <h3>Корзина пуста</h3>
<?php endif;?>
Виджит после футора view/layouts/main.php

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

<?php
\yii\bootstrap\Modal::begin([
    'header' => '<h2>Корзина</h2>',
    'id' => 'cart',
    'size' => 'modal-lg',
    'footer' => '<button type="button" class="btn btn-default" data-dismiss="modal">Продолжить покупки</button>
        <button type="button" class="btn btn-success">Оформить заказ</button>
        <button type="button" class="btn btn-danger" onclick="clearCart()">Очистить корзину</button>'
]);

\yii\bootstrap\Modal::end();
?>
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение svil »

Заработало. Добавила новый класс fart

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

<li><?= Html::a('<i class="fa fa-shopping-cart"></i> Корзина',['cart/show'], ['class' => 'fart', 'title' => 'Корзина']) ?></li>

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

$('.fart').on('click', function (e){
    url = e.currentTarget.href; // Линк берем из ссылки
    $.ajax({
       // url: './cart/show',
        url: url,
        type: 'GET',
        success: function(res){
            if(!res) alert('Ошибка!');
            showCart(res);
        },
        error: function(){
          //  getCart2();
            alert('Error!');
        }
    });
    return false;
});
Спасибо за помощь!!!
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение Dominus »

Если убрать из ссылки тэг <i> получится следующее:

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

<?= Html::a(' Корзина', ['cart/show'], ['class' => 'fa fa-shopping-cart', 'title' => 'Корзина']) ?>
Тогда событие трогать не потребуется

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

$('.fa-shopping-cart').on('click', function (e){
   //...
}); 
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение svil »

Тогда и иконка не выводится
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение Dominus »

Должна выводиться если на ссылке установленно 2 класса fa и fa-shopping-cart
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как сохранить иконки ссылок шаблона в YII2

Сообщение andku83 »

Dominus писал(а): 2018.05.21, 15:25 Должна выводиться если на ссылке установленно 2 класса fa и fa-shopping-cart
это смотря как там стили прописаны ;)
Ответить