salut
j'ai une entité tree plutôt bien faite et quand je lui installe les crud, que je réadapte le formtype pour avoir ce qui m'intéresse (lui donner un titre et un parent et que le reste se fasse "automatiquement" en fonction), il veut pas me le créer...
en gros, il me dit que la colonne lft peut pas être vide, ca sera donc aussi le cas pour la colonne droite.
en gros, voilà mon entité :
mon form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 <?php namespace MyModelBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; /** * @Gedmo\Tree(type="nested") * @ORM\Table(name="aw_tree") * @ORM\Entity * @ORM\HasLifecycleCallbacks */ class AwTree { /** * @ORM\Column(name="id", type="bigint") * @ORM\Id * @ORM\GeneratedValue */ private $id; /** * @ORM\Column(name="title", type="string", length=64, nullable=false) */ private $title; /** * @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="AwTree", inversedBy="children") * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL") */ private $parent; /** * @ORM\OneToMany(targetEntity="AwTree", mappedBy="parent") * @ORM\OrderBy({"lft" = "ASC"}) */ private $children; //... /** * @ORM\PrePersist */ public function __construct() { $this->children = new \Doctrine\Common\Collections\ArrayCollection(); if ($this->getParent() != null){ parent::__construct(); $this->lvl = parent::getLvl() + 1; $this->root = parent::getRoot(); } else { $this->lvl = 0; } } }
mon controller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php namespace MyModelBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class AwTreeType extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $builder ->add('title') ->add('parent', 'entity', array('class'=>'MyModelBundle\Entity\AwTree', 'property'=>'title', 'required' => false)) ; } public function getName() { return 'mymodelbundle_awtreetype'; } }
et je capte pas ce que je dois rajouter dans mon prepersist ou mon controller pour que lft et rgt s'incrémentent automatiquement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 <?php namespace MyModelBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use MyModelBundle\Entity\AwTree; use MyModelBundle\Form\AwTreeType; use Gedmo\Tree\TreeListener; /** * AwTree controller. * */ class AwTreeController extends Controller { //... /** * Displays a form to create a new AwTree entity. * */ public function newAction() { $entity = new AwTree(); $form = $this->createForm(new AwTreeType(), $entity); return $this->render('MyModelBundle:AwTree:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView() )); } /** * Creates a new AwTree entity. * */ public function createAction() { $entity = new AwTree(); $request = $this->getRequest(); $form = $this->createForm(new AwTreeType(), $entity); $form->bindRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getEntityManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('tree_show', array('id' => $entity->getId()))); } return $this->render('MyModelBundle:AwTree:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView() )); } //... }
si quelqu'un peut m'éclairer, ca serait cool.
merci
Partager