public function loadModel($id) { if (($model = ChemicalCategory::model()->findByPk($id)) === null) { throw new CHttpException(404, 'Страница не найдена'); } return $model; }
protected function refreshCategories() { $categories = $this->categoriesArray; ItemToCategory::model()->deleteAllByAttributes(array('item_id' => $this->id)); if (is_array($categories)) { foreach ($categories as $id) { if (ChemicalCategory::model()->exists('t.id = :id', array(':id' => $id))) { $rel = new ItemToCategory(); $rel->item_id = $this->id; $rel->category_id = $id; $rel->save(); } } } }
public function actionIndex($alias = '') { $filter = array(); // Список категорий $categoryList = ChemicalCategory::model()->published()->findAll(array('order' => 't.sort ASC')); // Определяем, выбрана или нет категория $category = null; if (!empty($alias)) { // Если выбрана категория $category = ChemicalCategory::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("chemical"); } // Формируем список товаров с учетом фильтрации $model = new ChemicalItem('user_search'); $model->unsetAttributes(); // Категория if (!empty($category)) { $model->search_category = $category->id; $filter['search_category'] = $category->id; } if (isset($_GET['ChemicalItem'])) { $model->attributes = $_GET['ChemicalItem']; // Название if ($model->title != '') { $filter['title'] = $model->title; } // Производитель if (!empty($model->producer_id)) { $filter['producer_id'] = $model->producer_id; } // Причина if (!empty($model->search_reason)) { $filter['search_reason'] = $model->search_reason; } // Изделие if (!empty($model->search_product)) { $filter['search_product'] = $model->search_product; } } // Поиск товаров $dataProvider = $model->user_search(); // Сохраняем ссылку для возврата Yii::app()->user->setState('chemicalCatalogReturnUrl', $this->_constructReturnUrl('/chemical/catalog/index')); // Сохраняем данные фильтра в сессии //$filter['page'] = (int) Yii::app()->request->getParam('page', 1); Yii::app()->user->setState('chemicalCatalogFilter', $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)); } }