$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 не работает