Exemplo n.º 1
0
 public function actionIndex($alias = '')
 {
     $filter = array();
     // Определяем, выбрана или нет категория
     $category = null;
     if (!empty($alias)) {
         // Если выбрана категория
         $category = Category::model()->published()->with(array('slides' => array('scopes' => 'published', 'order' => 'slides.sort ASC')))->findByAlias($alias);
         if (!$category) {
             throw new CHttpException(404);
         }
         $page = $category;
     } else {
         // Загружаем страницу "Галерея"
         Yii::import("application.modules.page.models.Page");
         $page = Page::model()->with(array('slides' => array('scopes' => 'published', 'order' => 'slides.sort ASC')))->findByPath("gallery");
     }
     // Формируем список товаров с учетом фильтрации
     $model = new Picture('user_search');
     $model->unsetAttributes();
     // Категория
     if (!empty($category)) {
         $model->category_id = $category->id;
     }
     if (isset($_GET['search'])) {
         $model->setAttributes(array('searchText' => $_GET['search']));
         if (!empty($model->searchText)) {
             $filter['searchText'] = $model->searchText;
         }
     } elseif (isset($_GET['Picture'])) {
         $model->attributes = $_GET['Picture'];
         // Категория
         if (!empty($model->category_id)) {
             $filter['category_id'] = $model->category_id;
         }
         if (!empty($model->title)) {
             $filter['title'] = $model->title;
         }
         // Автор
         if (!empty($model->author_id)) {
             $filter['author_id'] = $model->author_id;
         }
         // Цвет
         if (!empty($model->color_id)) {
             $filter['color_id'] = $model->color_id;
         }
     }
     // Поиск товаров
     if (!$model->validate()) {
         $model->unsetAttributes();
     }
     $dataProvider = $model->user_search();
     // Сохраняем ссылку для возврата
     Yii::app()->user->setState('galleryReturnUrl', $this->_constructReturnUrl('/catalog/catalog/index'));
     // Сохраняем данные фильтра в сессии
     Yii::app()->user->setState('galleryFilter', $filter);
     if (Yii::app()->request->isAjaxRequest) {
         $this->renderPartial('_list', array('dataProvider' => $dataProvider), false, true);
         Yii::app()->end();
     } else {
         // Вывод каталога
         $this->render('index', array('page' => $page, 'model' => $model, 'dataProvider' => $dataProvider));
     }
 }