/** * Загружаем модель категории */ public function loadModel($id) { $model = CatalogCategory::model()->findByPk($id); /*if($model===null) throw new CHttpException(404,'The requested page does not exist.');*/ return $model; }
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model = $this->loadModel($id); // Дополнительные фото $productImages = new CatalogImage(); $criteria = new CDbCriteria(); $criteria->compare('id_product', $id); $photoDataProvider = new CActiveDataProvider('CatalogImage', array('criteria' => $criteria, 'pagination' => false)); $this->breadcrumbs = CatalogCategory::getParents($model->id_category, true); $this->breadcrumbs[] = $model->title; $this->breadcrumbs[] = 'Редактирование'; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['CatalogProduct'])) { $model->attributes = $_POST['CatalogProduct']; // Чтобы красиво написано было //$model->noyml=!$model->noyml; $model->hide = !$model->hide; //$model->hide=!$this->hide; // if(isset($_POST['CatalogProductAttribute'])){ // $model->productAttrubute=$_POST['CatalogProductAttribute']; //} if ($model->save()) { // записываем атрибуты товара, переданные из формы if (isset($_POST['CatalogProductAttribute'])) { $model->productAttributeSave($_POST['CatalogProductAttribute']); } $this->redirect(array('view', 'id' => $model->id)); } } //print_r($model->productAttrubute); $this->render('update', array('model' => $model, 'productImages' => $productImages, 'photoDataProvider' => $photoDataProvider)); }
/** * Updates a particular model * If update is successful, the browser will be redirected to the 'view' page * * @param integer $id the ID of the model to be updated * * @throws CHttpException */ public function actionUpdate($id) { $model = $this->loadModel($id); $serviceImages = new CatalogImage(); $this->breadcrumbs = CatalogCategory::getParents($model->id_category, true); $this->breadcrumbs[] = $model->short_title; $this->breadcrumbs[] = 'Редактирование'; if (isset($_POST['CatalogService'])) { $model->attributes = $_POST['CatalogService']; if ($model->save()) { $this->redirect(array('view', 'id' => $model->id)); } } $this->render('update', array('model' => $model, 'serviceImages' => $serviceImages)); }
/** * Parse url * * @param $manager * @param $request * @param $pathInfo * @param $rawPathInfo * * @return bool|string */ public function parseUrl($manager, $request, $pathInfo, $rawPathInfo) { if (preg_match('%^(/?([\\w\\-.]+))+$%', $pathInfo, $matches)) { $pages = preg_split("/\\//", $pathInfo); $element_arr = explode('.', end($pages)); $element = $element_arr[0]; if ($page = CatalogCategory::model()->find(array('condition' => 'link=:link', 'params' => array(':link' => $element)))) { return '/services/default/category/link/' . $element; } else { if ($service = CatalogService::model()->find(array('condition' => 'link=:link', 'params' => array(':link' => $element)))) { return '/services/default/service/id/' . $service->id; } else { return false; } } } return false; }
public function parseUrl($manager, $request, $pathInfo, $rawPathInfo) { if (preg_match('%^(/?([\\w\\-.]+))+$%', $pathInfo, $matches)) { //разбиваем путь по слешам и берем последнюю составляющую пути $pages = preg_split("/\\//", $pathInfo); //$element = end($pages); $element_arr = explode('.', end($pages)); $element = $element_arr[0]; if (in_array('brands', $pages)) { if (count($pages) == 3) { if ($brand = CatalogBrands::model()->find(array('select' => 'id', 'condition' => 'link=:link', 'params' => array(':link' => $element)))) { return 'catalog/brands/index/view/' . $element; } else { return false; } } elseif (count($pages) == 4) { return 'catalog/brands/index/view/' . $pages[2] . '/coll/' . $element; } else { return false; } } else { if ($page = CatalogCategory::model()->find(array('select' => 'id', 'condition' => 'link=:link', 'params' => array(':link' => $element)))) { // если есть - преобразуем адрес return '/catalog/default/category/link/' . $element; } else { // если такой категории нет - проверяем, может быть есть такой товар if ($product = CatalogProduct::model()->find(array('select' => 'id', 'condition' => 'link=:link', 'params' => array(':link' => $element)))) { // если есть - преобразуем адрес return '/catalog/default/product/id/' . $product->id; } else { // если нет - не применяем правило return false; } } } } return false; // не применяем данное правило }
<div class="row"> <?php echo $form->label($model, 'price'); ?> <?php echo $form->textField($model, 'price', array('maxlength' => 256)); ?> </div> <div class="row"> <?php echo $form->label($model, 'id_category'); ?> <?php echo $form->dropDownList($model, 'id_category', CatalogCategory::getAllCategoriesList(), array('empty' => 'Не важно')); ?> </div> <div class="row"> <?php echo $form->label($model, 'on_main'); ?> <?php echo $form->checkBox($model, 'on_main'); ?> </div> <div class="row buttons"> <?php
public function run() { /** * КАТЕГОРИИ */ CatalogCategory::create(array('id' => 1, 'active' => 1, 'slug' => 'bicycles', 'lft' => 1, 'rgt' => 8)); CatalogCategoryMeta::create(array('category_id' => 1, 'language' => 'ru', 'active' => 1, 'name' => 'Велосипеды')); CatalogCategoryMeta::create(array('category_id' => 1, 'language' => 'en', 'active' => 1, 'name' => 'Bicycles')); CatalogCategory::create(array('id' => 2, 'active' => 1, 'slug' => 'mountain', 'lft' => 2, 'rgt' => 3)); CatalogCategoryMeta::create(array('category_id' => 2, 'language' => 'ru', 'active' => 1, 'name' => 'Горные')); CatalogCategory::create(array('id' => 3, 'active' => 1, 'slug' => 'road', 'lft' => 4, 'rgt' => 5)); CatalogCategoryMeta::create(array('category_id' => 3, 'language' => 'ru', 'active' => 1, 'name' => 'Шоссейные')); CatalogCategory::create(array('id' => 4, 'active' => 1, 'slug' => 'city', 'lft' => 6, 'rgt' => 7)); CatalogCategoryMeta::create(array('category_id' => 4, 'language' => 'ru', 'active' => 1, 'name' => 'Городские')); CatalogCategory::create(array('id' => 5, 'active' => 1, 'slug' => 'pc', 'lft' => 9, 'rgt' => 10)); CatalogCategoryMeta::create(array('category_id' => 5, 'language' => 'ru', 'active' => 1, 'name' => 'Компьютеры')); /** * ТОВАРЫ */ CatalogProduct::create(array('id' => 1, 'active' => 1, 'category_id' => 1, 'slug' => 'normal_bike', 'article' => 'sku0001', 'amount' => '5', 'lft' => 1, 'rgt' => 2)); CatalogProductMeta::create(array('product_id' => 1, 'language' => 'ru', 'active' => 1, 'name' => 'Обычный велосипед', 'description' => 'Какое-то описание продукта...', 'price' => '25000')); CatalogProduct::create(array('id' => 2, 'active' => 1, 'category_id' => 1, 'slug' => 'normal_bike_2', 'article' => 'sku0002', 'amount' => '5', 'lft' => 3, 'rgt' => 4)); CatalogProductMeta::create(array('product_id' => 2, 'language' => 'ru', 'active' => 1, 'name' => 'Обычный велосипед 2', 'description' => 'Какое-то описание продукта...', 'price' => '25000')); CatalogProduct::create(array('id' => 3, 'active' => 1, 'category_id' => 1, 'slug' => 'normal_bike_3', 'article' => 'sku0003', 'amount' => '5', 'lft' => 5, 'rgt' => 6)); CatalogProductMeta::create(array('product_id' => 3, 'language' => 'ru', 'active' => 1, 'name' => 'Обычный велосипед 3', 'description' => 'Какое-то описание продукта...', 'price' => '25000')); /** * АТРИБУТЫ */ CatalogAttributeGroup::create(array('id' => 1, 'category_id' => 1, 'active' => 1, 'slug' => 'default', 'lft' => 1, 'rgt' => 2)); CatalogAttributeGroupMeta::create(array('attributes_group_id' => 1, 'language' => 'ru', 'active' => 1, 'name' => 'По умолчанию')); CatalogAttribute::create(array('id' => 1, 'active' => 1, 'slug' => 'wheel_radius', 'attributes_group_id' => 1, 'type' => 'text', 'lft' => 1, 'rgt' => 2)); CatalogAttributeMeta::create(array('attribute_id' => 1, 'language' => 'ru', 'active' => 1, 'name' => 'Радиус колеса')); CatalogAttribute::create(array('id' => 2, 'active' => 1, 'slug' => 'material', 'attributes_group_id' => 1, 'type' => 'textarea', 'lft' => 3, 'rgt' => 4)); CatalogAttributeMeta::create(array('attribute_id' => 2, 'language' => 'ru', 'active' => 1, 'name' => 'Материал рамы')); CatalogAttributeGroup::create(array('id' => 2, 'category_id' => 1, 'active' => 1, 'slug' => 'additional', 'lft' => 3, 'rgt' => 4)); CatalogAttributeGroupMeta::create(array('attributes_group_id' => 2, 'language' => 'ru', 'active' => 1, 'name' => 'Дополнительно')); CatalogAttribute::create(array('id' => 3, 'active' => 1, 'slug' => 'flashlight', 'attributes_group_id' => 2, 'type' => 'checkbox', 'lft' => 5, 'rgt' => 6)); CatalogAttributeMeta::create(array('attribute_id' => 3, 'language' => 'ru', 'active' => 1, 'name' => 'Наличие фары освещения')); CatalogAttribute::create(array('id' => 4, 'active' => 1, 'slug' => 'breaks', 'attributes_group_id' => 2, 'type' => 'select', 'settings' => '{"selectable":1}', 'lft' => 7, 'rgt' => 8)); CatalogAttributeMeta::create(array('attribute_id' => 4, 'language' => 'ru', 'active' => 1, 'name' => 'Тормоза', 'settings' => '{"values":"\\u0414\\u0438\\u0441\\u043a\\u043e\\u0432\\u044b\\u0435\\n\\u041a\\u043e\\u043b\\u043e\\u0434\\u043e\\u0447\\u043d\\u044b\\u0435"}')); /** * ЗНАЧЕНИЯ АТРИБУТОВ для ТОВАРА */ CatalogAttributeValue::create(array('product_id' => 1, 'attribute_id' => 1, 'language' => 'ru', 'value' => 'R22')); CatalogAttributeValue::create(array('product_id' => 1, 'attribute_id' => 2, 'language' => 'ru', 'value' => '', 'settings' => '{"value":"\\u041a\\u0430\\u0440\\u0431\\u043e\\u043d\\/\\u0430\\u043b\\u044e\\u043c\\u0438\\u043d\\u0438\\u0439"}')); CatalogAttributeValue::create(array('product_id' => 1, 'attribute_id' => 3, 'language' => 'ru', 'value' => '1')); CatalogAttributeValue::create(array('product_id' => 1, 'attribute_id' => 4, 'language' => 'ru', 'value' => 'Дисковые')); /** * СТАТУСЫ ЗАКАЗОВ */ CatalogOrderStatus::create(array('id' => 1, 'sort_order' => 1)); CatalogOrderStatusMeta::create(array('status_id' => 1, 'language' => 'ru', 'title' => 'В обработке')); CatalogOrderStatus::create(array('id' => 2, 'sort_order' => 2)); CatalogOrderStatusMeta::create(array('status_id' => 2, 'language' => 'ru', 'title' => 'Ожидает оплаты')); CatalogOrderStatus::create(array('id' => 3, 'sort_order' => 3)); CatalogOrderStatusMeta::create(array('status_id' => 3, 'language' => 'ru', 'title' => 'Оплачен')); CatalogOrderStatus::create(array('id' => 4, 'sort_order' => 4)); CatalogOrderStatusMeta::create(array('status_id' => 4, 'language' => 'ru', 'title' => 'Ожидает отправки')); CatalogOrderStatus::create(array('id' => 5, 'sort_order' => 5)); CatalogOrderStatusMeta::create(array('status_id' => 5, 'language' => 'ru', 'title' => 'Завершен')); /** * ЗАКАЗЫ */ CatalogOrder::create(array('id' => 1, 'status_id' => 4, 'total_sum' => 120000, 'client_id' => NULL, 'client_name' => 'Покупатель', 'delivery_info' => 'г.Ростов-на-Дону, ул Суворова 52а, оф.301', 'comment' => 'Комментарий покупателя к заказу')); CatalogOrderProduct::create(array('order_id' => 1, 'product_id' => 1, 'count' => 2, 'price' => 25000, 'product_cache' => '[]')); CatalogOrderProductAttribute::create(array('order_id' => 1, 'product_id' => 1, 'attribute_id' => 4, 'attribute_cache' => 'Тормоза', 'value' => 'Дисковые')); CatalogOrderProduct::create(array('order_id' => 1, 'product_id' => 2, 'count' => 3, 'price' => 24000, 'product_cache' => '[]')); CatalogOrderProductAttribute::create(array('order_id' => 1, 'product_id' => 2, 'attribute_id' => 4, 'attribute_cache' => 'Тормоза', 'value' => 'Колодочные')); CatalogOrderProduct::create(array('order_id' => 1, 'product_id' => 3, 'count' => 1, 'price' => 23000, 'product_cache' => '[]')); CatalogOrderProductAttribute::create(array('order_id' => 1, 'product_id' => 3, 'attribute_id' => 4, 'attribute_cache' => 'Тормоза', 'value' => 'Без тормозов')); /** * ИСТОРИЯ СТАТУСОВ ЗАКАЗА */ CatalogOrderStatusHistory::create(array('order_id' => 1, 'status_id' => 1, 'comment' => 'Заказ сделан, ожидает обработки...', 'changer_name' => 'Покупатель')); CatalogOrderStatusHistory::create(array('order_id' => 1, 'status_id' => 2, 'comment' => 'Менеджер обработал заказ, ожидание оплаты', 'changer_name' => 'Продавец')); CatalogOrderStatusHistory::create(array('order_id' => 1, 'status_id' => 3, 'comment' => 'Покупатель оплатил товар', 'changer_name' => 'Покупатель')); CatalogOrderStatusHistory::create(array('order_id' => 1, 'status_id' => 4, 'comment' => 'Товар был успешно оплачен, ожидание отправки', 'changer_name' => 'Продавец')); }
$form = $this->beginWidget('CActiveForm', array('id' => 'catalog-product-form', 'htmlOptions' => array('enctype' => 'multipart/form-data'), 'enableAjaxValidation' => false)); ?> <p class="note">Поля, отмеченные <span class="required">*</span>, обязательны для заполнения</p> <?php echo $form->errorSummary($model); ?> <div class="row"> <?php echo $form->labelEx($model, 'id_category'); ?> <?php echo $form->dropDownList($model, 'id_category', CHtml::listData(CatalogCategory::model()->findAll('parent_id = 0'), 'id', 'title')); ?> <?php echo $form->error($model, 'id_category'); ?> </div> <div class="row"> <?php echo $form->labelEx($model, 'title'); ?> <?php echo $form->textField($model, 'title', array('size' => 60, 'maxlength' => 256, 'id' => 'productTitle')); ?> <?php echo $form->error($model, 'title');
public function getFullLinkFast() { if (isset($this->idCategoryFast)) { // возвращаем путь к категории товара и прибавляем в конце id return '/catalog' . CatalogCategory::getCategoryRouteFast($this->idCategoryFast) . '/' . $this->link . '.html'; } else { return '/catalog/' . $this->link . '.html'; } }
/** * Create url * * @param string $route * @param array $params * @param string $ampersand * * @return string */ public function createUrl($route, $params = array(), $ampersand = '&') { if ($route == 'category') { if (isset($params['link'])) { return '/services' . CatalogCategory::getCategoryRoute($params['link']); } } if ($route == 'service') { if (isset($params['id'])) { if ($service = CatalogService::model()->find(array('condition' => 'id=:id', 'params' => array(':id' => $params['id'])))) { $category = CatalogCategory::model()->findByPk($service->id_category); return '/services' . CatalogCategory::getCategoryRoute($category->link) . '/' . $service->id; } } } return parent::createUrl($route, $params, $ampersand); }
<?php } $form = $this->beginWidget('CActiveForm', array('id' => 'seacrh-form', 'action' => '/catalog/default/selection', 'method' => 'get', 'htmlOptions' => array('style' => 'display:' . ($params['category'] ? 'none' : 'block')))); ?> <div class="s-form"> <div class="row"> <h1>Подобрать питомца</h1> </div> <div class="row"> <div class="column"> <?php echo CHtml::label('Вид животного', 'params_category'); ?> : <?php echo CHtml::dropDownList('params[category]', $params['category'], CHtml::listData(CatalogCategory::model()->findAll('parent_id = 0'), 'id', 'title'), array('empty' => 'Любое животное', 'class' => 'form-group')); ?> </div> <div class="column mh"> <?php echo CHtml::label('Возраст', 'params_ageFrom'); ?> : <div class="column-left"> <div class="text">от</div> <?php echo CHtml::textField('params[ageFrom]', $params['ageFrom'], array('maxlength' => 256)); ?> <?php echo CHtml::dropDownList('params[ageFromUnit]', $params['ageFromUnit'], array(7 => 'Недель', 30 => 'Месяцев', 365 => 'Лет')); ?>
/** * Returns the full link to the service * * @return string */ public function getFullLink() { if (isset($this->idCategory)) { return '/services' . CatalogCategory::getCategoryRoute($this->idCategory->link) . '/' . $this->link . '.html'; } else { return '/services/' . $this->link . '.html'; } }
public function createUrl($route, $params = array(), $ampersand = '&') { // если формируем ссылку на категорию if ($route == 'category') { if (isset($params['link'])) { return '/catalog' . CatalogCategory::getCategoryRoute($params['link']); } } // если формируем ссылку на товар if ($route == 'product') { // если передано id товара if (isset($params['id'])) { // если существует такой продукт if ($product = CatalogProduct::model()->find(array('condition' => 'id=:id', 'params' => array(':id' => $params['id'])))) { // берем категорию продукта $category = CatalogCategory::model()->with('parentShort')->findByPk($product->id_category); // возвращаем путь к категории товара и прибавляем в конце id return '/catalog' . CatalogCategory::getCategoryRouteFast($category) . '/' . $product->id; } } } // если условия не сработали - формируем адрес обычным образом return parent::createUrl($route, $params, $ampersand); }
?> : <?php echo $form->textField($model, 'phone', array('maxlength' => 256)); ?> </div> </div> <div class="row"> <div class="column"> <?php echo $form->labelEx($model, 'id_category'); ?> : <?php echo $form->dropDownList($model, 'id_category', CHtml::listData(CatalogCategory::model()->findAll('parent_id = 0'), 'id', 'title'), array('empty' => 'Выберите вид животного', 'class' => 'form-group')); ?> </div> <div class="column"> <?php echo $form->label($model, 'title'); ?> : <?php echo $form->textField($model, 'title', array('maxlength' => 256)); ?> </div> </div> <div class="row"> <div class="column">
public static function getAllCategoriesList() { $root_category = new CatalogCategory(); $root_category->id = 0; return $root_category->getAllChildsList(0); }
/** * Load category model * * @param $id * * @return mixed */ public function loadModel($id) { $result = null; if ($model = CatalogCategory::model()->findByPk($id)) { $result = $model; } return $result; }
/** * Create url * * @param string $route * @param array $params * * @return string */ public function createUrl($route, $params = array()) { if ($route == 'category') { if (isset($params['link'])) { return '/services' . CatalogCategory::getCategoryRoute($params['link']); } } }