public function loadModel($id)
 {
     if (($model = ChemicalCategory::model()->findByPk($id)) === null) {
         throw new CHttpException(404, 'Страница не найдена');
     }
     return $model;
 }
Ejemplo n.º 2
0
 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));
     }
 }