Ошибка Gedmo Tree getPath: узел не связан с этим хранилищем. 500 Внутренняя ошибка сервера - InvalidArgumentException
Я получаю ошибку:
Node is not related to this repository
500 Internal Server Error - InvalidArgumentException
ОБНОВЛЕНИЕ 1: не имеет значения, если я настроил деревохранилище с чертами или жерасширить абстрактный репозиторий ошибка такая же.
ОБНОВЛЕНИЕ 2: Полная трассировка стекаhttp://pastebin.com/TtaJnyzf
Я хочу вывести HTML-дерево с древовидной структурой из базы данных и, в частности,Мне нужно получить путь от корня до выбранного узла, Насколько я понимаю, это делается с помощью функции getPath ().
Я использую:
Symfony v3.0.6;Доктрина v2.5.4StofDoctrineExtensionsBundle [1]для того, чтобы управлять древовидной структурой.
Для настройки древовидной структуры я использовал документацию на Symfony.com [2], а затем документацию на GitHub [3], [4], [5], [6].
Пока у меня есть древовидная структура в базе данных, и я получаю HTML-дерево, как это:
<?php
namespace AppBundle\Controller;
use AppBundle\Entity\Category;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class TreeController extends Controller
{
/**
* @Route("/tree", name="tree")
*/
public function treeAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('AppBundle:Category');
$options = array(
'decorate' => true,
'rootOpen' => '<ul>',
'rootClose' => '</ul>',
'childOpen' => '<li>',
'childClose' => '</li>',
nodeDecorator' => function($node)
{
return '<a href="/some_path/...">'. $node['title'] .'</a>';
}
);
$htmlTree = $repo->childrenHierarchy(
null, /* starting from root nodes */
false, /* false: load all children, true: only direct */
$options
);
return $this->render('tree/tree_show.html.twig', array('project_tree' => $htmlTree));
}
}
Я изменил две строки, чтобы отобразить путь от корня элемента дерева до выбранного элемента
nodeDecorator' => function($node) use ($repo)
{
return '<a href="/project_path/'. implode('/', $repo->getPath($node)) .'">'. $node['title'] .'</a>';
}
Как видно из [7] и [8], существует функция getPath (), которая должна возвращать массив элементов из корня в выбранный элемент.
Я думаю, что проблема может заключаться в этом блоке кода:
$repo->getPath($node)
[1]stofDoctrineExtensionsBundle на GitHub;[2]stofDoctrineExtensinsBundnle документация на Symfony.com;[3]Документация Gedmo Tree на GitHub;[4]Gedmo Tree> Tree Entity пример;[5]Дерево Gedmo> Пример базового использования;[6]Пример вывода дерева html;[7] NestedTreeRepository используетNestedTreeRepositoryTrait[8] NestedTreeRepositoryTrait имеетфункция "getPath ()".Пожалуйста, порекомендуйте. Спасибо за ваше время и знания.