Zend Paginator Filter результаты

У меня есть набор результатов с использованием Zend Paginator, все работает нормально, но мне нужно отфильтровать результаты, используя опции-флажки, как на eBay, Amazon и т. Д.

Я читал о фильтре Zend, но не знаю, с чего начать.

У кого-нибудь есть опыт этого, пожалуйста?

Спасибо

Джон

2 ответа

Zend_Filter - это трансформировать что-то во что-то вроде переводчика.

Огромным преимуществом Zend_Paginator является то, что он получает данные постранично. Выясните, что вы хотите отобразить 30 элементов из таблицы с несколькими миллионами. Это будет очень медленный процесс, если вы извлечете все данные и затем отфильтруете их, чтобы убрать эти 30 элементов.

Предположим, что вы получаете ваши предметы из базы данных, вы должны использовать DbSelect или же DbTableSelect адаптер. использование DbTableSelect если вы извлекаете из одной таблицы и DbSelect если вы получаете из более чем одной таблицы, присоединившись.

Как только у вас есть $select Объект, с помощью которого вы будете получать все элементы на всех страницах, paginator будет извлекать элементы постранично, устанавливая ограничение и смещение. Например, если вы отображаете 30 элементов на странице, и вы хотите отобразить страницу № 3, paginator установит $select->limit(30, 60) (вам не нужно делать это, пагинатор сделает это за вас). Для этого попробуйте следующее в вашем контроллере:

// pass ?page=N in the url
$pageNumber = $this->getRequest()->getParam('page', 1);
// itemsPerPage can also be read from the url
$itemsPerPage = 30;
// this $select must retrieve all items in all pages
$select = new Zend_Db_Select();
$select->from(...)
    // eventually joins, where, or order statements
$paginator = new Zend_Paginator($select);
$paginator->setCurrentPageNumber($pageNumber);
$paginator->setItemCountPerPage($itemsPerPage);

Вам, наконец, нужно передать нумератор страниц в шаблон рендеринга предметов и управления разбиением на страницы. Так добавь

$this->view->paginator = $paginator;

и отредактируйте шаблон как в http://framework.zend.com/manual/1.12/en/zend.paginator.usage.html

Так что это основная функциональность пагинатора. Надеюсь, это поможет. Было бы очень похоже, если вы используете другой тип адаптеров, таких как Array или же Iterator,

Опции флажков не имеют ничего общего с Zend_Paginator.

Zend_Paginator - это просто класс Helper, который помогает разбить ваши результаты на страницы, он добавляет предложение LIMIT и упрощает создание шаблонов результатов, не более того.

То, что вы ищете, называется "Фасетный поиск", вы должны разработать логику или использовать поисковик, такой как Solr, который может генерировать его автоматически

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