Mam problem z uzyskaniem menu w formie drzewa. Korzystam z Tree nested i otrzymuję kod błędu: "Error: Call to a member function childrenHierarchy() on a non-object".
Dopiero zaczynam przygode z SF2, dlatego prosze o wyrozumialosc.
W kontrolerze mam taki zapis:
public function menucategoriesAction() { $em = $this->getDoctrine()->getEntityManager(); $repo = $em->getRepository('MlFrontendBundle:Categories')->findAll(); if (!$repo) { throw $this->createNotFoundException('Kategorie - brak rekordów!'); } 'decorate' => true, 'rootOpen' => '<ul>', 'rootClose' => '</ul>', 'childOpen' => '<li>', 'childClose' => '</li>', 'nodeDecorator' => function($node) { return '<a href="/category/'.$node['slug'].'">'.$node[$field].'</a>'; } ); $htmlTree = $repo->childrenHierarchy( null, /* starting from root nodes */ false, /* true: load all children, false: only direct */ $options ); return $this->render('MlFrontendBundle:Default:menucategories.html.twig', array('htmlTree' => $htmlTree)); }
Categories.php
namespace Ml\FrontendBundle\Entity; use Gedmo\Sluggable\Sluggable; use Gedmo\Mapping\Annotation as Gedmo; use Doctrine\ORM\Mapping as ORM; /** * Categories * * @Gedmo\Tree(type="nested") * @ORM\Table(name="categories") * @ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\NestedTreeRepository") */ class Categories { /** * @var integer * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @Assert\NotBlank() * @ORM\Column(name="name", type="string", length=255) */ private $name; /** * @var string $slug * * @Gedmo\Slug(fields={"name"}) * @ORM\Column(length=255, unique=true) */ private $slug; /** * @Gedmo\TreeLeft * @ORM\Column(name="lft", type="integer") */ private $lft; /** * @Gedmo\TreeLevel * @ORM\Column(name="lvl", type="integer") */ private $lvl; /** * @Gedmo\TreeRight * @ORM\Column(name="rgt", type="integer") */ private $rgt; /** * @Gedmo\TreeRoot * @ORM\Column(name="root", type="integer", nullable=true) */ private $root; /** * @Gedmo\TreeParent * @ORM\ManyToOne(targetEntity="Categories", inversedBy="children") * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE") */ private $parent; /** * @ORM\OneToMany(targetEntity="Categories", mappedBy="parent") * @ORM\OrderBy({"lft" = "ASC"}) */ private $children; ... }
W plikach konfiguracyjnych mam odpowiednie wpisy, a mimo to nie dziala.
Czy ktos z Was mial stycznosc z tree nested i mi pomoze?