@@ -1114,6 +1114,69 @@ public function testLoaderCaching()
11141114 $ this ->assertSame ($ choiceList1 , $ choiceList3 );
11151115 }
11161116
1117+ public function testLoaderCachingWithParameters ()
1118+ {
1119+ $ entity1 = new SingleIntIdEntity (1 , 'Foo ' );
1120+ $ entity2 = new SingleIntIdEntity (2 , 'Bar ' );
1121+ $ entity3 = new SingleIntIdEntity (3 , 'Baz ' );
1122+
1123+ $ this ->persist (array ($ entity1 , $ entity2 , $ entity3 ));
1124+
1125+ $ repo = $ this ->em ->getRepository (self ::SINGLE_IDENT_CLASS );
1126+
1127+ $ entityType = new EntityType (
1128+ $ this ->emRegistry ,
1129+ PropertyAccess::createPropertyAccessor ()
1130+ );
1131+
1132+ $ entityTypeGuesser = new DoctrineOrmTypeGuesser ($ this ->emRegistry );
1133+
1134+ $ factory = Forms::createFormFactoryBuilder ()
1135+ ->addType ($ entityType )
1136+ ->addTypeGuesser ($ entityTypeGuesser )
1137+ ->getFormFactory ();
1138+
1139+ $ formBuilder = $ factory ->createNamedBuilder ('form ' , 'form ' );
1140+
1141+ $ formBuilder ->add ('property1 ' , 'entity ' , array (
1142+ 'em ' => 'default ' ,
1143+ 'class ' => self ::SINGLE_IDENT_CLASS ,
1144+ 'query_builder ' => $ repo ->createQueryBuilder ('e ' )->where ('e.id = :id ' )->setParameter ('id ' , 1 ),
1145+ ));
1146+
1147+ $ formBuilder ->add ('property2 ' , 'entity ' , array (
1148+ 'em ' => 'default ' ,
1149+ 'class ' => self ::SINGLE_IDENT_CLASS ,
1150+ 'query_builder ' => function (EntityRepository $ repo ) {
1151+ return $ repo ->createQueryBuilder ('e ' )->where ('e.id = :id ' )->setParameter ('id ' , 1 );
1152+ },
1153+ ));
1154+
1155+ $ formBuilder ->add ('property3 ' , 'entity ' , array (
1156+ 'em ' => 'default ' ,
1157+ 'class ' => self ::SINGLE_IDENT_CLASS ,
1158+ 'query_builder ' => function (EntityRepository $ repo ) {
1159+ return $ repo ->createQueryBuilder ('e ' )->where ('e.id = :id ' )->setParameter ('id ' , 1 );
1160+ },
1161+ ));
1162+
1163+ $ form = $ formBuilder ->getForm ();
1164+
1165+ $ form ->submit (array (
1166+ 'property1 ' => 1 ,
1167+ 'property2 ' => 1 ,
1168+ 'property3 ' => 2 ,
1169+ ));
1170+
1171+ $ choiceList1 = $ form ->get ('property1 ' )->getConfig ()->getOption ('choice_list ' );
1172+ $ choiceList2 = $ form ->get ('property2 ' )->getConfig ()->getOption ('choice_list ' );
1173+ $ choiceList3 = $ form ->get ('property3 ' )->getConfig ()->getOption ('choice_list ' );
1174+
1175+ $ this ->assertInstanceOf ('Symfony\Component\Form\ChoiceList\ChoiceListInterface ' , $ choiceList1 );
1176+ $ this ->assertSame ($ choiceList1 , $ choiceList2 );
1177+ $ this ->assertSame ($ choiceList1 , $ choiceList3 );
1178+ }
1179+
11171180 public function testCacheChoiceLists ()
11181181 {
11191182 $ entity1 = new SingleIntIdEntity (1 , 'Foo ' );
0 commit comments