Witam.
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 Symfony\Component\Validator\Constraints
as Assert;
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?