public function loadModel($id) { if (($model = InteriorCategory::model()->findByPk($id)) === null) { throw new CHttpException(404, 'Страница не найдена'); } return $model; }
public function getCategoryList() { return CHtml::listData(InteriorCategory::model()->findAll(), 'id', 'title'); }
public function actionIndex($alias = '') { $filter = array(); // Список категорий $categoryList = InteriorCategory::model()->published()->findAll(array('order' => 't.sort ASC')); // Определяем, выбрана или нет категория $category = null; if (!empty($alias)) { // Если выбрана категория $category = InteriorCategory::model()->published()->with(array('slides' => array('scopes' => 'published', 'order' => 'slides.sort ASC')))->find('t.alias = :alias', array(':alias' => $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("interiors"); } // Формируем список товаров с учетом фильтрации $model = new InteriorItem('user_search'); $model->unsetAttributes(); // Категория if (!empty($category)) { $model->category_id = $category->id; } if (isset($_GET['InteriorItem'])) { $model->attributes = $_GET['InteriorItem']; // Категория if (!empty($model->category_id)) { $filter['category_id'] = $model->category_id; } // Название if ($model->title != '') { $filter['title'] = $model->title; } // Название камня /* if($model->stone_title != '') { $filter['stone_title'] = $model->stone_title; } * */ // Фильтрация по камню if ($model->stone_id != '') { $filter['stone_id'] = $model->stone_id; } // Цвет if (!empty($model->color_id)) { $filter['color_id'] = $model->color_id; } // ID if (!empty($model->id)) { $filter['id'] = $model->id; } } // Поиск товаров $dataProvider = $model->user_search(); // Сохраняем ссылку для возврата Yii::app()->user->setState('interiorCatalogReturnUrl', $this->_constructReturnUrl('/interior/catalog/index')); // Сохраняем данные фильтра в сессии Yii::app()->user->setState('interiorCatalogFilter', $filter); if (Yii::app()->request->isAjaxRequest) { // Обновление списка для бесконечной загрузки элементов if (isset($_GET['showMore'])) { $this->renderPartial('_list_ajax', array('dataProvider' => $dataProvider, 'pageNumber' => (int) Yii::app()->request->getParam('page', 1))); } else { $this->renderPartial('_list', array('dataProvider' => $dataProvider), false, true); } Yii::app()->end(); } else { // Вывод каталога $this->render('index', array('page' => $page, 'model' => $model, 'dataProvider' => $dataProvider, 'categoryList' => $categoryList)); } }