@@ -1127,6 +1127,69 @@ public function testLoaderCaching()
11271127 $ this ->assertSame ($ choiceLoader1 , $ choiceLoader3 );
11281128 }
11291129
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+
11301193 protected function createRegistryMock ($ name , $ em )
11311194 {
11321195 $ registry = $ this ->getMock ('Doctrine\Common\Persistence\ManagerRegistry ' );
0 commit comments