public function actionSharechars($type_parent = 3) { $this->breadcrumbs = array('Группы товаров' => array('/catalog/catalog/listgroup'), 'Настройки' => array('/catalog/catalog/settings'), 'Список предопределенных характеристик' => array('/catalog/catalog/sharechars')); $model = new CatalogChars('search'); $model->unsetAttributes(); // clear any default values if (isset($_GET['CatalogChars'])) { $model->attributes = $_GET['CatalogChars']; } if (isset($_POST['CatalogChars'])) { //Добавляем новую предопределенную характеристику $model->attributes = $_POST['CatalogChars']; $model->type_parent = $type_parent; if ($model->save()) { //Если указано наследование - создаем это свойство для остальных элементов в этом объекте if ($model->inherits == 1) { CatalogChars::model()->addInherits($model, $_POST['CatalogChars']); } else { //Иначе - создаем только для указаного каталога это свойство $model = new CatalogChars(); $model->attributes = $_POST['CatalogChars']; $model->type_parent = 1; $model->save(); } } $model = new CatalogChars('search'); $model->unsetAttributes(); // clear any default values } $param = null; $param[] = 'type_parent = ' . $type_parent; $param[] = 'is_deleted = 0'; $data['sort'] = array('defaultOrder' => 'id DESC'); $data['Pagination'] = array('PageSize' => 100); $provider = new CActiveDataProvider('CatalogChars', $data); $param = implode(" AND ", $param); $provider->criteria = $model->search($param); $root = CatalogRubrics::getRoot(); $catalog = CMap::mergeArray(array($root->id => $root->name), $root->getFormattedDescendants($root->id)); $this->render('sharechars', array('model' => $model, 'provider' => $provider, 'catalog' => $catalog, 'root' => $root)); }
/** * @param $model * @param $param * Добавляет наследование для категории */ public function addInherits($model, $param) { if ($model->type_parent == 1 || $model->type_parent == 3) { //Для категорий $modelcatalog = CatalogRubrics::model()->findByPk($model->parent_id); foreach ($modelcatalog->descendants()->findAll() as $data) { $model_chars = new CatalogChars(); $model_chars->attributes = $param; $model_chars->parent_id = $data->id; $model_chars->type_parent = 1; $model_chars->save(); } } return true; }