$this->getState не работает на пользовательской панели инструментов

Я создаю функцию экспорта (Excel) на странице элементов списка Joomla. В view.html.php я добавил панель инструментов для запуска задачи загрузки с контроллера

JToolbarHelper::custom('softcustomers.download', 'download', 'download', 'Download Excel', false);

В моем контроллере я определяю задачу загрузки и делаю экспорт из модели

public function download()
{
    $model = $this->getModel('softcustomers');
    $model->download();
}

В моей модели я использую $this->getListQuery(), чтобы получить элементы

public function download()
{
    $db = JFactory::getDbo();
    $db->setQuery($this->getListQuery());
    $results = $db->loadObjectList();
    Ldn_softHelper::export_excel($results, "Customers");
}

Это работает, когда я нажимаю кнопку скачать Excel с панели инструментов, но есть проблема. Из бэкэнда, когда я фильтрую элементы (пример изменения статуса с опубликованного на неопубликованный), неопубликованные элементы отображаются правильно. Но когда я нажимаю кнопку загрузки, он загружает все элементы без фильтра. Я проверил view.html.php, он вызывает getItems из модели

$this->items = $this->get('Items');

getItems () из модели использует getListQuery () для получения запроса. getListQuery () использует метод getstate () для получения фильтров из серверной части

// Filter by published state
    $published = $this->getState('filter.state');

    if (is_numeric($published))
    {
        $query->where('a.state = ' . (int) $published);
    }
    elseif ($published === '')
    {
        $query->where('(a.state IN (0, 1))');
    }

Я не знаю, почему, когда я использую getListQuery () из download (), фильтр /$this->getState не работает

0 ответов

Другие вопросы по тегам