コード例 #1
0
 /**
  * @uses autocomplete
  */
 public function suggestionAction()
 {
     /* @var $request \Zend\Http\Request */
     $request = $this->getRequest();
     $jsonModel = new JsonModel();
     if (!($q = urldecode(trim($request->getQuery('q'))))) {
         return $jsonModel;
     }
     $p = new \Product\Model\Store();
     $p->setServiceLocator($this->getServiceLocator());
     $data = ['searchOptions' => $p->searchOptions()];
     $limit = trim($request->getQuery('limit'));
     $p->addOption('limit', $limit > 0 ? $limit : 20);
     /* @var $baseStoreMapper \Product\Model\BaseStoreMapper */
     $baseStoreMapper = $this->getServiceLocator()->get('Product\\Model\\BaseStoreMapper');
     $products = $baseStoreMapper->search($p);
     if (is_array($products) && count($products)) {
         $cIds = [];
         foreach ($products as $p) {
             /* @var $p \Product\Model\Store */
             $p->setIsBaseProduct(true);
             $data['products'][] = $p->toStd();
             if ($p->getBaseCategoryId()) {
                 $cIds[$p->getBaseCategoryId()] = $p->getBaseCategoryId();
             }
         }
         if ($request->getQuery('showMore') && $request->getQuery('showMore') == 'category') {
             /* @var $baseCategoryMapper \Product\Model\BaseCategoryMapper */
             $baseCategoryMapper = $this->getServiceLocator()->get('Product\\Model\\BaseCategoryMapper');
             $baseCategory = new \Product\Model\BaseCategory();
             $baseCategory->setChilds($cIds);
             $baseCategory->addOption('limit', 5);
             $categories = $baseCategoryMapper->search($baseCategory);
             if (count($categories)) {
                 foreach ($categories as $c) {
                     /* @var \Product\Model\BaseCategory $c*/
                     $data['categories'][] = $c->toStd();
                 }
             }
         }
     }
     $jsonModel->setVariables($data);
     return $jsonModel;
 }
コード例 #2
0
 /**
  * @uses autocomplete
  */
 public function suggestionAction()
 {
     /* @var $request \Zend\Http\Request */
     $request = $this->getRequest();
     $data = array();
     if (!($q = urldecode(trim($request->getQuery('q'))))) {
         return new JsonModel($data);
     }
     $ps = new \Product\Model\Store();
     $ps->setServiceLocator($this->getServiceLocator());
     /* @var $psMapper \Product\Model\StoreMapper */
     $psMapper = $this->getServiceLocator()->get('Product\\Model\\StoreMapper');
     /* @var $categoryMapper \Product\Model\CategoryMapper */
     $categoryMapper = $this->getServiceLocator()->get('Product\\Model\\CategoryMapper');
     $data['searchOptions'] = $ps->prepareSearch();
     $limit = trim($request->getQuery('limit'));
     $options['limit'] = $limit > 0 ? $limit : 20;
     $products = $psMapper->search($ps, $options);
     if (is_array($products) && count($products)) {
         $cIds = [];
         /* @var $ps \Product\Model\Store */
         foreach ($products as $ps) {
             $data['products'][] = $ps->toStd();
             if ($ps->getCategoryId()) {
                 $cIds[$ps->getCategoryId()] = $ps->getCategoryId();
             }
         }
         if ($request->getQuery('showMore') && $request->getQuery('showMore') == 'category') {
             $category = new \Product\Model\Category();
             $category->setStoreId($ps->getStoreId());
             $category->setChilds($cIds);
             $categories = $categoryMapper->search($category, ['limit' => 5]);
             if (count($categories)) {
                 foreach ($categories as $c) {
                     $data['categories'][] = $c->toStd();
                 }
             }
         }
     }
     return new JsonModel($data);
 }