@EVOSandru6

Как в YII NestedSet сделать так, чтобы при обновлении узел не скатывался вправо?

Добрый день,

такая проблема, использовал мануальчик для реализации NestedSet в иерархической таблице - webnotes.by/docs/php/yii/derevo-kategoriy-v-yii-s-...

Там есть actionUpdate. Кажется в нем при обновлении узла(любой внутренней информации по таблице или связочных данных) Узел скатывается вправо среди братьев и сестер на том же уровне. В чем проблема может быть и как её избежать?

Этот кусок внутри actionUpdate в моем контроллере

if(isset($_POST['Product']))
        {
            $code_par = (int)$_POST['Product']['CODE_PAR'];
            // Вытаскиваем родителя
            $node = Product::model()->findByPk($code_par);
            // Присваиваем атрибуты
            $model->attributes = $_POST['Product'];

            $model->CODE_PAR = (int)$code_par;
            $model->CAT = (int)$_POST['Product']['CAT'];
            $model->SALE = (int)$_POST['Product']['SALE'];
            $model->EXIST = (int)$_POST['Product']['EXIST'];
            $model->TEMPLATE = (int)$_POST['Product']['TEMPLATE'];

            // если это корень дерева и первый элемент с левым ключом, равным 1
            if($model->LFT == 1 || $model->CODE == $node->CODE){
                // Создание корня
                if($model->saveNode()){
                    Yii::app()->user->setFlash('category_error', "Структура дерева не изменена.");
                    $this->redirect(array('view','id'=>$model->CODE));
                }
            }
            // если выбрана какая то категория
            else{
                // Создаем узел
                if($model->saveNode()){
                    // если имеются потомки у узла
                    if($node->isDescendantOf($model))
                        Yii::app()->user->setFlash('category_error', "Структура дерева не изменена.");
                    // если имеются потомки
                    else
                        $model->moveAsLast($node);
                    $this->redirect(array('view','id'=>$model->CODE));
                }
            }
        }
  • Вопрос задан
  • 2288 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы