Страница 1 из 4
Работающий экстеншен NestedSet 2
Добавлено: 2014.10.31, 16:55
vismut
Вижу проблема популярная.
Пользоваться практически так же, как и старой версией.
https://github.com/Sammaye/NestedSetBehavior
UPDATE (01.01.2015):
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.10.31, 20:19
Faenir
Сегодня весь день провозился с экстеншном от creocoder, вроде заставил работать даже... и тут на тебе))
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.01, 13:53
zelenin
а работать с релизом, а не rc будет?
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.05, 11:21
vismut
zelenin писал(а):а работать с релизом, а не rc будет?
Да, конечно.
Там вобще мало что поменялось то.. между RC и релизом
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.05, 12:39
r3verser
Это есть вэри гуд.)
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.05, 13:58
vismut
Хотел сделать пулл реквест)
Но когда я правил код, я не думал с ним делиться, потому автоформатером кода весь код был переформатирован)
На пулл реквес автор ответил, что у него были табы, а у меня пробелы. И он не хочет щас проверять каждую строчку, проверять что я ничего не сломал)
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.05, 14:00
zelenin
vismut писал(а):Хотел сделать пулл реквест)
Но когда я правил код, я не думал с ним делиться, потому автоформатером кода весь код был переформатирован)
На пулл реквес автор ответил, что у него были табы, а у меня пробелы. И он не хочет щас проверять каждую строчку, проверять что я ничего не сломал)
все верно говорит.
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 14:10
RGF
а как подключать?
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 15:59
vismut
RGF писал(а):а как подключать?
Я надеюсь автор примет пулл реквест и можно будет установить компоузером.
Пока что можно по старинке, просто скопировать в проект)
пользоваться так же, как NestedSet из 1 версии.
https://github.com/yiiext/nested-set-behavior
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 16:20
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',
),
);
}
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 16:26
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',
),
);
}
"не срастается" - очень информативно.
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 17:02
RGF
Class ext.yiiext.behaviors.model.trees.NestedSetBehavior does not exist
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 17:06
zelenin
RGF писал(а):Class ext.yiiext.behaviors.model.trees.NestedSetBehavior does not exist
правильно, потому что такого класса нет, т.к. вы тупо скопировали из yii1.
Зачем вам какое-то расширение, если вы еще не понимаете как вообще работает yii2 и php?
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 17:13
vismut
RGF писал(а):Class ext.yiiext.behaviors.model.trees.NestedSetBehavior does not exist
Чтоб удобно пользоваться данным расширением, сначала вам нужно:
1. изучить неймспейсы, понимать что и как
2. прочитать основные положения yii2 из официальной документации
3. В том поведении, которые вы установили компоузером - ПхпДок не исправлен и ваша ИДЕ не будет вам ничего подсазывать
4. У этого поведения есть небольшие отличия при получении данных, потому вам придется смотреть исходный код, для того чтоб понимать, что именно вам вернется.
В целом уии это не набор готовых решений и хелперов. Это очень мощная база для качественного приложения, но чтоб сделать что-то хорошее вам постоянно придется разбираться в исходном коде и читать документация прямо в коде.
Так-же советую изучить
http://www.getinfo.ru/article610.html
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.06, 18:05
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));
}
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.07, 09:15
vismut
Тут я вижу что у вашей $model есть parent_id и вы перемещаете ноду $model в ноду $model->parent_id, в которой эта нода уже содержится.
Смысл не понятен мне..
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.07, 09:38
RGF
я указываю id нового родителя для данной $model
мне же нужен аргумент для $model->moveAsFirst
для этого и создал поле parent_id, это вариант мне показался наиболее простым
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.07, 13:56
vismut
В нестид сет нет понятия parent_id и оно там не нужно вовсе.
Так-же советую изучить
http://www.getinfo.ru/article610.html
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.07, 14:23
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(х))
Re: Работающий экстеншен NestedSet 2
Добавлено: 2014.11.07, 14:39
vismut
Проверил у себя, все работает.
Выложите тестовый пример.
Структура дерева до.
какую ноду в какую перемещаете
Структура дерева после.
Чтоб посмотреть что и как пересчиталось.