@@ -82,13 +82,27 @@ protected function configureFormFields(FormMapper $formMapper)
82
82
{
83
83
$ subject = $ this ->getSubject ();
84
84
$ isNew = ($ this ->id ($ subject ) === null ) ? true : false ;
85
+ $ request = $ this ->getRequest ();
85
86
86
- if ($ isNew === true ) {
87
- $ idMenu = $ this ->getRequest ()->query ->getInt ('create-menu ' );
88
- $ idItem = $ this ->getRequest ()->query ->getInt ('create-item ' );
89
- } else {
90
- $ idMenu = $ subject ->getMenu ()->getId ();
91
- $ idItem = ($ subject ->getParent () !== null ) ? $ subject ->getParent ()->getId () : 0 ;
87
+ $ idItem = null ;
88
+ $ idMenu = null ;
89
+ if ($ request ->query ->has ('uniqid ' )) {
90
+ $ formId = $ request ->query ->get ('uniqid ' );
91
+ if ($ request ->request ->has ($ formId )) {
92
+ $ formData = $ request ->request ->get ($ formId );
93
+ $ idMenu = $ formData ['create-menu ' ];
94
+ $ idItem = $ formData ['create-item ' ];
95
+ }
96
+ }
97
+
98
+ if ($ idMenu === null && $ idItem === null ) {
99
+ if ($ isNew === true ) {
100
+ $ idMenu = $ this ->getRequest ()->query ->get ('create-menu ' );
101
+ $ idItem = $ this ->getRequest ()->query ->get ('create-item ' );
102
+ } else {
103
+ $ idMenu = $ subject ->getMenu ()->getId ();
104
+ $ idItem = ($ subject ->getParent () !== null ) ? $ subject ->getParent ()->getId () : null ;
105
+ }
92
106
}
93
107
94
108
$ formMapper
@@ -98,7 +112,7 @@ protected function configureFormFields(FormMapper $formMapper)
98
112
'property ' => 'name ' ,
99
113
'query_builder ' => function (EntityRepository $ entityRepository ) use ($ idMenu ) {
100
114
$ query = $ entityRepository ->createQuerybuilder ('m ' );
101
- if ($ idMenu === 0 ) {
115
+ if ($ idMenu === null ) {
102
116
return $ query ;
103
117
}
104
118
@@ -108,20 +122,27 @@ protected function configureFormFields(FormMapper $formMapper)
108
122
},
109
123
]);
110
124
111
- if ($ idItem === 0 && $ idMenu === 0 || $ isNew === false && $ subject ->getParent () !== null || $ isNew === true && $ idItem > 0 ) {
125
+ if ($ idItem != null ) {
126
+ $ pool = $ this ->getConfigurationPool ();
127
+ $ doctrine = $ pool ->getContainer ()->get ('doctrine.orm.default_entity_manager ' );
128
+ $ parentItem = $ doctrine ->getRepository ('AlpixelMenuBundle:Item ' )->find ($ idItem );
129
+
112
130
$ formMapper ->add ('parent ' , null , [
113
131
'label ' => 'Item parent ' ,
114
132
'required ' => true ,
115
133
'property ' => 'name ' ,
116
- 'query_builder ' => function (EntityRepository $ entityRepository ) use ($ idItem ) {
117
- $ query = $ entityRepository ->createQuerybuilder ('i ' );
118
- if ($ idItem === 0 ) {
119
- return $ query ;
134
+ 'data ' => $ parentItem ,
135
+ 'query_builder ' => function (EntityRepository $ repository ) use ($ parentItem ) {
136
+ $ qb = $ repository ->createQueryBuilder ('i ' );
137
+
138
+ if ($ parentItem ->getParent () === null ) {
139
+ return $ qb ->where ('i.parent IS NULL ' )
140
+ ->andWhere ('i.menu = :id ' )
141
+ ->setParameter ('id ' , $ parentItem ->getMenu ());
120
142
}
121
143
122
- return $ query
123
- ->where ('i.id = :id ' )
124
- ->setParameter ('id ' , $ idItem );
144
+ return $ qb ->where ('i.id IN (:ids) ' )
145
+ ->setParameter ('ids ' , $ parentItem ->getParent ()->getChildren ());
125
146
},
126
147
]);
127
148
}
@@ -134,6 +155,16 @@ protected function configureFormFields(FormMapper $formMapper)
134
155
->add ('uri ' , 'text ' , [
135
156
'label ' => 'URI ' ,
136
157
'required ' => true ,
158
+ ])
159
+ ->add ('create-menu ' , 'hidden ' , [
160
+ 'required ' => false ,
161
+ 'data ' => $ idMenu ,
162
+ 'mapped ' => false ,
163
+ ])
164
+ ->add ('create-item ' , 'hidden ' , [
165
+ 'required ' => false ,
166
+ 'data ' => $ idItem ,
167
+ 'mapped ' => false ,
137
168
]);
138
169
}
139
170
0 commit comments