@@ -2299,4 +2299,57 @@ public function testShouldHydrateEmptyCollection()
2299
2299
$ this ->assertTrue ($ this ->form ->isValid ());
2300
2300
$ this ->assertEquals ([], $ this ->form ->getObject ()->foo );
2301
2301
}
2302
+
2303
+ /**
2304
+ * Test for https://github.com/zendframework/zend-form/issues/83
2305
+ */
2306
+ public function testCanBindNestedCollectionAfterPrepare ()
2307
+ {
2308
+
2309
+ $ collection = new Element \Collection ('numbers ' );
2310
+ $ collection ->setOptions ([
2311
+ 'count ' => 2 ,
2312
+ 'allow_add ' => false ,
2313
+ 'allow_remove ' => false ,
2314
+ 'target_element ' => [
2315
+ 'type ' => 'ZendTest\Form\TestAsset\PhoneFieldset '
2316
+ ]
2317
+ ]);
2318
+
2319
+ $ form = new Form ();
2320
+ $ object = new \ArrayObject ();
2321
+ $ phone1 = new \ZendTest \Form \TestAsset \Entity \Phone ();
2322
+ $ phone2 = new \ZendTest \Form \TestAsset \Entity \Phone ();
2323
+ $ phone1 ->setNumber ('unmodified ' );
2324
+ $ phone2 ->setNumber ('unmodified ' );
2325
+ $ collection ->setObject ([$ phone1 , $ phone2 ]);
2326
+
2327
+ $ form ->setObject ($ object );
2328
+ $ form ->add ($ collection );
2329
+
2330
+ $ value = [
2331
+ 'numbers ' => [
2332
+ [
2333
+ 'id ' => '1 ' ,
2334
+ 'number ' => 'modified ' ,
2335
+ ],
2336
+ [
2337
+ 'id ' => '2 ' ,
2338
+ 'number ' => 'modified ' ,
2339
+ ],
2340
+ ],
2341
+ ];
2342
+
2343
+ $ form ->prepare ();
2344
+
2345
+ $ form ->bindValues ($ value );
2346
+
2347
+ $ fieldsets = $ collection ->getFieldsets ();
2348
+
2349
+ $ fieldsetFoo = $ fieldsets [0 ];
2350
+ $ fieldsetBar = $ fieldsets [1 ];
2351
+
2352
+ $ this ->assertEquals ($ value ['numbers ' ][0 ]['number ' ], $ fieldsetFoo ->getObject ()->getNumber ());
2353
+ $ this ->assertEquals ($ value ['numbers ' ][1 ]['number ' ], $ fieldsetBar ->getObject ()->getNumber ());
2354
+ }
2302
2355
}
0 commit comments