@shanik

Почему не работает Nested Set в Yii2?

В таблице есть столбцы для Nested Set
5a58aa9b503db850450031.png

В качестве логики используется готовый модуль
https://github.com/creocoder/yii2-nested-sets

для построения дерева и для drag and drop используется
https://github.com/wbraganca/yii2-fancytree-widget

Данные для него формирует
https://github.com/wokster/yii2-nested-sets-tree-b...

Все подключено, все двигается но в базе значения lft rgt и depth не обновляется правильно у depth значения даже с минусом получается

код:

<?= \wbraganca\fancytree\FancytreeWidget::widget([
	'options' =>[
		'source' => $data,
		'extensions' => ['dnd'],
		'dnd' => [
			'preventVoidMoves' => true,
			'preventRecursiveMoves' => true,
			'autoExpandMS' => 400,
			
			'dragStart' => new JsExpression('function(node, data) {
				return true;
			}'),
			'dragEnter' => new JsExpression('function(node, data) {
				return true;
			}'),
			'dragDrop' => new JsExpression('function(node, data) {
				$.get("move",{item: data.otherNode.data["id"], action: data.hitMode, second: node.data["id"]},function(e ) {
					data.otherNode.moveTo(node, data.hitMode);
					console.log(e);
				});
			}'),
		],
	]
]);
?>

public function actionMove($item,$action,$second)
    {
		$item_model = $this->findModel($item);
		$second_model = $this->findModel($second);
		
		switch($action) {
			case 'after':
				$item_model->insertAfter($second_model);
				break;
			case 'before':
				$item_model->insertBefore($second_model);
				break;
			case 'over':
				$item_model->appendTo($second_model);
				break;
		}
		if($item_model->save()) {
			return print_r($item_model);
		}
		return true;
		
    }


при перемещение, ajax срабатывает и данные приходят правильные

5a58aff549d86609393838.png

Визуально все работает и данные правильно приходят на функции креокодера но изменения не правильные. Что делать? Это только у меня или у других тоже есть проблемы?
  • Вопрос задан
  • 750 просмотров
Пригласить эксперта
Ответы на вопрос 2
@shanik Автор вопроса
Максим Тимофеев, Здравствуйте Максим, может Вы поможете. Делал по вашему вебинару
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вероятно валидация, сделайте lft rgt и depth safe атрибутами
return [
....
[['lft','rgt','depth'],'safe'],
....
];
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы