1 Отредактировано Ярослав (20.11.2014 00:20:44)

Тема: Как программно удалить Все товары из списка сравнения

Здравствуйте! Подскажите, пожалуйста, насчет сабжа.
Корзину очистить можно, а список по одному товару.

Понятно, что можно просто вызвать удаление 1 товара поочередно.
В контроллере блока увидел метод removeAll, в контроллере фронта такого нет.

2

Re: Как программно удалить Все товары из списка сравнения

Как программно удалить Все товары из списка сравнения?

Через PHP так:

$compare = \Catalog\Model\Compare::currentCompare();
$compare->removeAll();

Повысить оценку Понизить оценку

Re: Как программно удалить Все товары из списка сравнения

Спасибо!
А каким образом через Jquery ?  Или делать циклом по одному?

4

Re: Как программно удалить Все товары из списка сравнения

Вы можете сделать простейший контроллер.

<?php
namespace ВАШ МОДУЛЬ\Controller\Front;

class Compare extends \RS\Controller\Front
{
    function actionIndex()
    {
           $compare = \Catalog\Model\Compare::currentCompare();
           $compare->removeAll();

           return $this->result->setSuccess(true);
    }
    
}     

Задать маршрут для контроллера

<?
namespace ВАШ МОДУЛЬ\Config;

class Handlers extends \RS\Event\HandlerAbstract
{
    function init()
    {
        $this
            ->bind('getroute');
    }
    
    public static function getRoute($routes) 
    {
        $routes[] = new \RS\Router\Route('ВАШ МОДУЛЬ-front-compare', array(
            '/resetcompare/',
        ), null, t('Удаление всех товаров из сравнения'));
        return $routes;
    }

}

после этого дернуть URL /resetcompare/ из jQuery, чтобы удалить все товары из сравнения одним запросом к серверу.

Ну либо в JavaScript просто последовательно эмитировать click на крестики у товаров в сравнении, если не хотите создавать простой контроллер.

Повысить оценку Понизить оценку

Re: Как программно удалить Все товары из списка сравнения

Спасибо за исчерпывающий ответ!
Хорошо, что приводятся примеры кода, так как система новая, не все сразу понятно при доработке.