public function indexAction() { /* @var $request \Zend\Http\Request */ $request = $this->getRequest(); $ps = new \Product\Model\Store(); $ps->setServiceLocator($this->getServiceLocator()); if (in_array($this->getServiceLocator()->get('Store\\Service\\Store')->getStoreId(), [66, 224, 81])) { $ps->setCategoryBaseId(12); // @todo fixed attrCategoryId for default store } $variables = $ps->prepareSearch(); $page = (int) $request->getQuery('page', 1); $icpp = (int) $request->getQuery('icpp', 20); $order = urldecode($request->getQuery('order', 'id desc')); $options = array('page' => $page > 0 ? $page : 1, 'icpp' => $icpp > 0 ? $icpp > 100 ? 100 : $icpp : 20, 'order' => strlen($order) > 0 ? $order : 'id desc'); /* @var $mapper \Product\Model\StoreMapper */ $mapper = $this->getServiceLocator()->get('Product\\Model\\StoreMapper'); $paginator = $mapper->search($ps, $options); $viewModel = new ViewModel(); // switch to json view mode if ($request->getQuery('format') == 'json') { $products = array(); foreach ($paginator as $p) { /* @var $p \Product\Model\Store */ $products[] = $p->toStd(); } return new JsonModel(array('products' => $products, 'maxPage' => count($paginator), 'totalProduct' => $paginator->getTotalItemCount())); } if ($request->getPost('template')) { $viewModel->setTemplate($request->getPost('template')); $viewModel->setTerminal($request->getPost('terminal', false)); } $viewModel->setVariables(array('paginator' => $paginator, 'query' => urldecode($request->getQuery('q')), 'order' => urldecode($request->getQuery('order')))); $viewModel->setVariables($variables); return $viewModel; }