Работающий экстеншен NestedSet 2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Работающий экстеншен NestedSet 2

Сообщение vismut »

Вижу проблема популярная.
Пользоваться практически так же, как и старой версией.
https://github.com/Sammaye/NestedSetBehavior

UPDATE (01.01.2015):
creocoder писал(а):Полностью переосмысленная и совместимая с Yii 2 release версия: https://github.com/creocoder/yii2-nested-sets
Последний раз редактировалось vismut 2015.01.12, 10:31, всего редактировалось 2 раза.

Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: Работающий экстеншен NestedSet 2

Сообщение Faenir »

Сегодня весь день провозился с экстеншном от creocoder, вроде заставил работать даже... и тут на тебе))

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Работающий экстеншен NestedSet 2

Сообщение zelenin »

а работать с релизом, а не rc будет?

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Работающий экстеншен NestedSet 2

Сообщение vismut »

zelenin писал(а):а работать с релизом, а не rc будет?
Да, конечно.
Там вобще мало что поменялось то.. между RC и релизом

Аватара пользователя
r3verser
Сообщения: 195
Зарегистрирован: 2012.04.01, 17:29
Откуда: Киев

Re: Работающий экстеншен NestedSet 2

Сообщение r3verser »

Это есть вэри гуд.)

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Работающий экстеншен NestedSet 2

Сообщение vismut »

Хотел сделать пулл реквест)
Но когда я правил код, я не думал с ним делиться, потому автоформатером кода весь код был переформатирован)
На пулл реквес автор ответил, что у него были табы, а у меня пробелы. И он не хочет щас проверять каждую строчку, проверять что я ничего не сломал)

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Работающий экстеншен NestedSet 2

Сообщение zelenin »

vismut писал(а):Хотел сделать пулл реквест)
Но когда я правил код, я не думал с ним делиться, потому автоформатером кода весь код был переформатирован)
На пулл реквес автор ответил, что у него были табы, а у меня пробелы. И он не хочет щас проверять каждую строчку, проверять что я ничего не сломал)
все верно говорит.

RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Работающий экстеншен NestedSet 2

Сообщение RGF »

а как подключать?

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Работающий экстеншен NestedSet 2

Сообщение vismut »

RGF писал(а):а как подключать?
Я надеюсь автор примет пулл реквест и можно будет установить компоузером.
Пока что можно по старинке, просто скопировать в проект)

пользоваться так же, как NestedSet из 1 версии.
https://github.com/yiiext/nested-set-behavior

RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Работающий экстеншен NestedSet 2

Сообщение RGF »

composer'ом установил: добавил в json
"sammaye/nestedsetbehavior": "*"

с этим в модели у меня не срастается:

Код: Выделить всё

    public function behaviors()
    {
        return array(
            'nestedSetBehavior'=>array(
                'class'=>'ext.yiiext.behaviors.model.trees.NestedSetBehavior',
                'leftAttribute'=>'lft',
                'rightAttribute'=>'rgt',
                'levelAttribute'=>'level',
            ),
        );
    } 

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Работающий экстеншен NestedSet 2

Сообщение zelenin »

RGF писал(а):composer'ом установил: добавил в json
"sammaye/nestedsetbehavior": "*"

с этим в модели у меня не срастается:

Код: Выделить всё

    public function behaviors()
    {
        return array(
            'nestedSetBehavior'=>array(
                'class'=>'ext.yiiext.behaviors.model.trees.NestedSetBehavior',
                'leftAttribute'=>'lft',
                'rightAttribute'=>'rgt',
                'levelAttribute'=>'level',
            ),
        );
    }
"не срастается" - очень информативно.

RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Работающий экстеншен NestedSet 2

Сообщение RGF »

Class ext.yiiext.behaviors.model.trees.NestedSetBehavior does not exist

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Работающий экстеншен NestedSet 2

Сообщение zelenin »

RGF писал(а):Class ext.yiiext.behaviors.model.trees.NestedSetBehavior does not exist
правильно, потому что такого класса нет, т.к. вы тупо скопировали из yii1.
Зачем вам какое-то расширение, если вы еще не понимаете как вообще работает yii2 и php?

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Работающий экстеншен NestedSet 2

Сообщение vismut »

RGF писал(а):Class ext.yiiext.behaviors.model.trees.NestedSetBehavior does not exist
Чтоб удобно пользоваться данным расширением, сначала вам нужно:
1. изучить неймспейсы, понимать что и как
2. прочитать основные положения yii2 из официальной документации
3. В том поведении, которые вы установили компоузером - ПхпДок не исправлен и ваша ИДЕ не будет вам ничего подсазывать
4. У этого поведения есть небольшие отличия при получении данных, потому вам придется смотреть исходный код, для того чтоб понимать, что именно вам вернется.

В целом уии это не набор готовых решений и хелперов. Это очень мощная база для качественного приложения, но чтоб сделать что-то хорошее вам постоянно придется разбираться в исходном коде и читать документация прямо в коде.

Так-же советую изучить http://www.getinfo.ru/article610.html

RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Работающий экстеншен NestedSet 2

Сообщение RGF »

1 знаком
2 грешен, смотрел по диагонали
3 поставил руками
4 уже понял, что с документацией, в особенности с примерами все плохо, приходится залезать в код

подключил
use common\components\NestedSetBehavior\NestedSetBehavior;
.....................

Код: Выделить всё

    public function behaviors()
    {
        return [
            [
                'class' => NestedSetBehavior::className(),
                'leftAttribute' => 'lft',
                'rightAttribute' => 'rgt',
                'levelAttribute' => 'level',
                'hasManyRoots' => true
            ],
        ];
    } 
при добавлении дерево строится корректно, но при перемещении веток lft и rgt перемещаемой пересчитываются неверно:
передаю parent_id для указания родителя

Код: Выделить всё

if ($parent !== null) {
    $result = $model->moveAsFirst(tblPages::findOne($model->parent_id));
} 

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Работающий экстеншен NestedSet 2

Сообщение vismut »

Тут я вижу что у вашей $model есть parent_id и вы перемещаете ноду $model в ноду $model->parent_id, в которой эта нода уже содержится.
Смысл не понятен мне..

RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Работающий экстеншен NestedSet 2

Сообщение RGF »

я указываю id нового родителя для данной $model
мне же нужен аргумент для $model->moveAsFirst
для этого и создал поле parent_id, это вариант мне показался наиболее простым

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Работающий экстеншен NestedSet 2

Сообщение vismut »

В нестид сет нет понятия parent_id и оно там не нужно вовсе.

Так-же советую изучить http://www.getinfo.ru/article610.html

RGF
Сообщения: 213
Зарегистрирован: 2013.01.29, 13:19

Re: Работающий экстеншен NestedSet 2

Сообщение RGF »

/**
* Move node as first child of target.
* @param ActiveRecord|NestedSetBehavior $target the target.
* @return boolean whether the moving succeeds.
*/
public function moveAsFirst($target)

какая разница как назвать, parent_id или target
я подставляю id родителя moveAsFirst(tblPages::findOne(х))

vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Работающий экстеншен NestedSet 2

Сообщение vismut »

Проверил у себя, все работает.

Выложите тестовый пример.
Структура дерева до.
какую ноду в какую перемещаете
Структура дерева после.

Чтоб посмотреть что и как пересчиталось.

Ответить