Ich benutze Symfony v3.0.4, Doctrine v2.5.4 und StofDoctrineExtensionsBundle [1], um die Struktur zu verwalten.How to getPath des Gedmo Tree Elements mit symfony3, doctrine2 und stofDoctrineExtensionsBundle
Zum Einrichten der Struktur habe ich Dokumentation auf Symfony.com [2] gefolgt von documentatnion auf GitHub [3] verwendet.
Dann fuhr ich mit Baum-Setup fort - Baum-Entity aus Beispiel [4] verwendet und Code in [5] verwendet, um einen Baum zu erstellen.
Ich habe [6] und [7] nicht verwendet, da es nicht notwendig scheint (soweit ich sagen kann, dass Baum funktioniert und ohne es anzeigt).
Siehe Aktualisierung.
Bisher habe ich eine Baumstruktur in der Datenbank und um sie anzuzeigen habe ich das Beispiel [8] modifiziert. Wie folgt aus:
<?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));
}
}
wenn ich eine Zeile wie diese ändern:
'nodeDecorator' => function($node) {
return '<a href="/project_path/'. implode('/', getPath($node)) .'">'. $node['title'] .'</a>';
}
zu erhalten, um Pfad zu jedem Element des Baumes i erhalten Fehler:
Fatal error: Call to undefined function AppBundle\Controller\getPath()
500 Internal Server Error - FatalThrowableError
- [ 1] stofDoctrineExtensionsBundle on GitHub;
- [2] stofDoctrineExtensinsBundnle documentation on Symfony.com;
- [3] Gedmo Tree documentation on GitHub;
- [4] Gedmo Tree > Tree Entity example;
- [5] Gedmo Tree > Basic Usage Example;
- [6] DID NOT USE: Gedmo Tree > Tree Repositories;
- [7] Gedmo Tree > Use Abstract Repositories;
- [8] Tree html output example;
- [9] NestedTreeRepository has method getPath().
Wie in [9] gesehen, hat NestedTreeRepository eine Methode getPath().
Update: Ich versuchte [6], schaffte es aber nicht einzurichten. Dann habe ich versucht [7] es richtig einzurichten, aber der Fehler bleibt gleich!
Bitte beraten. Vielen Dank für Ihre Zeit und Ihr Wissen.