コード例 #1
0
 public function loadModel($id)
 {
     if (($model = ProduceItem::model()->findByPk($id)) === null) {
         throw new CHttpException(404, 'Страница не найдена');
     }
     return $model;
 }
コード例 #2
0
 public function actionShow($alias)
 {
     $model = ProduceItem::model()->published()->with(array('color', 'images' => array('scopes' => 'published', 'order' => 'images.sort ASC')))->findByAlias($alias);
     if (!$model) {
         throw new CHttpException(404);
     }
     // Учитываем фильтр в каталоге
     $filter = Yii::app()->user->getState('produceCatalogFilter');
     // Определяем следующий товар
     $nextProduct = $model->getNextProduct($filter);
     // Определяем предыдущий товар
     $prevProduct = $model->getPrevProduct($filter);
     // Добавляем в просмотренное
     $this->getModule()->getComponent('watched')->put($model);
     $this->render('item', array('model' => $model, 'nextProduct' => $nextProduct, 'prevProduct' => $prevProduct, 'returnUrl' => Yii::app()->user->getState('produceCatalogReturnUrl')));
 }
コード例 #3
0
 public function getPrevProduct($filter = array())
 {
     $criteria = $this->_constructCriteriaByFilter($filter);
     $criteria->order = 'category.sort DESC, t.sort DESC';
     // Условие выборки по порядку
     $fullCriteria = clone $criteria;
     $fullCriteria->addCondition('((t.category_id = :category_id AND t.sort <= :sort) OR category.sort < :category_sort) AND t.id <> :id');
     $fullCriteria->params = array_merge($fullCriteria->params, array(':category_id' => $this->category_id, ':sort' => $this->sort, ':category_sort' => $this->category->sort, ':id' => $this->id));
     $prevProduct = ProduceItem::model()->published()->find($fullCriteria);
     if ($prevProduct === null) {
         $prevProduct = ProduceItem::model()->published()->find($criteria);
     }
     return $prevProduct;
 }
コード例 #4
0
 public function getPrevProduct($filter = array())
 {
     $criteria = $this->_constructCriteriaByFilter($filter);
     $criteria->order = 't.category_id DESC, cast(t.title as unsigned) DESC, t.title DESC';
     // Условие выборки по порядку
     $fullCriteria = clone $criteria;
     $fullCriteria->addCondition('cast(concat(category_id, t.title) as unsigned) <= (SELECT cast(concat(category_id, title) as unsigned) from `' . $this->tableName() . '` WHERE id = :id) AND t.id <> :id');
     $fullCriteria->params[':id'] = $this->id;
     $fullCriteria->order = ' t.category_id DESC, cast(t.title AS unsigned) DESC, t.title DESC';
     $prevProduct = ProduceItem::model()->published()->find($fullCriteria);
     if ($prevProduct === null) {
         $prevProduct = ProduceItem::model()->published()->find($criteria);
     }
     return $prevProduct;
 }