@@ -1127,6 +1127,69 @@ public function testLoaderCaching()
1127
1127
$ this ->assertSame ($ choiceLoader1 , $ choiceLoader3 );
1128
1128
}
1129
1129
1130
+ public function testLoaderCachingWithParameters ()
1131
+ {
1132
+ $ entity1 = new SingleIntIdEntity (1 , 'Foo ' );
1133
+ $ entity2 = new SingleIntIdEntity (2 , 'Bar ' );
1134
+ $ entity3 = new SingleIntIdEntity (3 , 'Baz ' );
1135
+
1136
+ $ this ->persist (array ($ entity1 , $ entity2 , $ entity3 ));
1137
+
1138
+ $ repo = $ this ->em ->getRepository (self ::SINGLE_IDENT_CLASS );
1139
+
1140
+ $ entityType = new EntityType (
1141
+ $ this ->emRegistry ,
1142
+ PropertyAccess::createPropertyAccessor ()
1143
+ );
1144
+
1145
+ $ entityTypeGuesser = new DoctrineOrmTypeGuesser ($ this ->emRegistry );
1146
+
1147
+ $ factory = Forms::createFormFactoryBuilder ()
1148
+ ->addType ($ entityType )
1149
+ ->addTypeGuesser ($ entityTypeGuesser )
1150
+ ->getFormFactory ();
1151
+
1152
+ $ formBuilder = $ factory ->createNamedBuilder ('form ' , 'Symfony\Component\Form\Extension\Core\Type\FormType ' );
1153
+
1154
+ $ formBuilder ->add ('property1 ' , 'Symfony\Bridge\Doctrine\Form\Type\EntityType ' , array (
1155
+ 'em ' => 'default ' ,
1156
+ 'class ' => self ::SINGLE_IDENT_CLASS ,
1157
+ 'query_builder ' => $ repo ->createQueryBuilder ('e ' )->where ('e.id = :id ' )->setParameter ('id ' , 1 ),
1158
+ ));
1159
+
1160
+ $ formBuilder ->add ('property2 ' , 'Symfony\Bridge\Doctrine\Form\Type\EntityType ' , array (
1161
+ 'em ' => 'default ' ,
1162
+ 'class ' => self ::SINGLE_IDENT_CLASS ,
1163
+ 'query_builder ' => function (EntityRepository $ repo ) {
1164
+ return $ repo ->createQueryBuilder ('e ' )->where ('e.id = :id ' )->setParameter ('id ' , 1 );
1165
+ },
1166
+ ));
1167
+
1168
+ $ formBuilder ->add ('property3 ' , 'Symfony\Bridge\Doctrine\Form\Type\EntityType ' , array (
1169
+ 'em ' => 'default ' ,
1170
+ 'class ' => self ::SINGLE_IDENT_CLASS ,
1171
+ 'query_builder ' => function (EntityRepository $ repo ) {
1172
+ return $ repo ->createQueryBuilder ('e ' )->where ('e.id = :id ' )->setParameter ('id ' , 1 );
1173
+ },
1174
+ ));
1175
+
1176
+ $ form = $ formBuilder ->getForm ();
1177
+
1178
+ $ form ->submit (array (
1179
+ 'property1 ' => 1 ,
1180
+ 'property2 ' => 1 ,
1181
+ 'property3 ' => 2 ,
1182
+ ));
1183
+
1184
+ $ choiceLoader1 = $ form ->get ('property1 ' )->getConfig ()->getOption ('choice_loader ' );
1185
+ $ choiceLoader2 = $ form ->get ('property2 ' )->getConfig ()->getOption ('choice_loader ' );
1186
+ $ choiceLoader3 = $ form ->get ('property3 ' )->getConfig ()->getOption ('choice_loader ' );
1187
+
1188
+ $ this ->assertInstanceOf ('Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface ' , $ choiceLoader1 );
1189
+ $ this ->assertSame ($ choiceLoader1 , $ choiceLoader2 );
1190
+ $ this ->assertSame ($ choiceLoader1 , $ choiceLoader3 );
1191
+ }
1192
+
1130
1193
protected function createRegistryMock ($ name , $ em )
1131
1194
{
1132
1195
$ registry = $ this ->getMock ('Doctrine\Common\Persistence\ManagerRegistry ' );
0 commit comments