year stofdoctrineextensionsbundle softdelete gedmo extensions extension created tree symfony doctrine-extensions stofdoctrineextensions

stofdoctrineextensionsbundle - Gedmo Tree getPath Error: el nodo no está relacionado con este repositorio 500 Internal Server Error-InvalidArgumentException



symfony doctrine year (1)

Lo tengo trabajando!

Aquí están los cambios necesarios:

en lugar de

nodeDecorator'' => function($node) use ($repo) { return ''<a href="/project_path/''. implode(''/'', $repo->getPath($node)) .''">''. $node[''title''] .''</a>''; }

uno debe escribir

''nodeDecorator'' => function($node) use ($repo) { return ''<a href="/project_path/''. @implode(''/'', $repo->getPath($repo->findOneBy(array(''id'' => $node[''id''])))) .''">''. $node[''title''] .''</a>''; }

y en clase de categoría agregar

public function __toString() { return $this->getTitle(); }

Eso es todo, la ruta a cada nodo ahora debería mostrarse.

Estoy recibiendo un error:

Node is not related to this repository 500 Internal Server Error - InvalidArgumentException

ACTUALIZACIÓN 1: no importa si configuro un repositorio de árbol con rasgos o extiendo el repositorio abstracto, el error es el mismo.

ACTUALIZACIÓN 2: rastro de pila completo http://pastebin.com/TtaJnyzf

Quiero mostrar el árbol html con la estructura de árbol de la base de datos y, específicamente , necesito obtener la ruta desde la raíz hasta el nodo seleccionado . Según lo entiendo, eso se hace con la función getPath ().

Estoy usando:

  • Symfony v3.0.6;
  • Doctrina v2.5.4
  • StofDoctrineExtensionsBundle [1]

para gestionar la estructura de árbol

Para configurar la estructura de árbol utilicé documentación en Symfony.com [2] seguido de documentación en GitHub [3], [4], [5], [6].

Hasta ahora tengo una estructura de árbol en la base de datos y obtengo un árbol html como este:

<?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)); } }

Cambié dos líneas para mostrar la ruta desde la raíz de un elemento de árbol hasta el elemento seleccionado

nodeDecorator'' => function($node) use ($repo) { return ''<a href="/project_path/''. implode(''/'', $repo->getPath($node)) .''">''. $node[''title''] .''</a>''; }

Como se ve en [7] y [8], existe la función getPath () que supone devolver una matriz de elementos de la raíz al elemento seleccionado.

Creo que el problema puede estar en este bloque de código:

$repo->getPath($node)

Por favor avise. Gracias por tu tiempo y conocimiento.