1515use Symfony \Component \Form \Extension \Core \Type \CollectionType ;
1616use Symfony \Component \Form \FormInterface ;
1717use Symfony \Component \Form \FormView ;
18+ use Symfony \Component \OptionsResolver \Options ;
1819use Symfony \Component \OptionsResolver \OptionsResolver ;
1920
2021/**
@@ -30,27 +31,41 @@ public function getParent()
3031
3132 public function configureOptions (OptionsResolver $ resolver )
3233 {
34+ $ defaultButtonAddOptions = [
35+ 'label ' => 'Add ' ,
36+ 'class ' => '' ,
37+ ];
38+ $ defaultButtonDeleteOptions = [
39+ 'label ' => 'Remove ' ,
40+ 'class ' => '' ,
41+ ];
3342 $ resolver ->setDefaults ([
34- 'button_add_text ' => 'Add ' ,
35- 'button_add_class ' => '' ,
36- 'button_delete_text ' => 'Remove ' ,
37- 'button_delete_class ' => '' ,
43+ 'button_add_options ' => $ defaultButtonAddOptions ,
44+ 'button_delete_options ' => $ defaultButtonDeleteOptions ,
3845 ]);
3946
40- $ resolver ->setAllowedTypes ('button_add_text ' , 'string ' );
41- $ resolver ->setAllowedTypes ('button_add_class ' , 'string ' );
42- $ resolver ->setAllowedTypes ('button_delete_text ' , 'string ' );
43- $ resolver ->setAllowedTypes ('button_delete_class ' , 'string ' );
47+ $ resolver ->setAllowedTypes ('button_add_options ' , 'array ' );
48+ $ resolver ->setAllowedTypes ('button_delete_options ' , 'array ' );
49+
50+ $ resolver ->setNormalizer ('button_add_options ' , function (Options $ options , $ value ) use ($ defaultButtonAddOptions ) {
51+ $ value ['label ' ] = $ value ['label ' ] ?? $ defaultButtonAddOptions ['label ' ];
52+ $ value ['class ' ] = $ value ['class ' ] ?? $ defaultButtonAddOptions ['class ' ];
53+ return $ value ;
54+ });
55+ $ resolver ->setNormalizer ('button_delete_options ' , function (Options $ options , $ value ) use ($ defaultButtonDeleteOptions ) {
56+ $ value ['label ' ] = $ value ['label ' ] ?? $ defaultButtonDeleteOptions ['label ' ];
57+ $ value ['class ' ] = $ value ['class ' ] ?? $ defaultButtonDeleteOptions ['class ' ];
58+ return $ value ;
59+ });
60+ //dd($resolver);
4461 }
4562
4663 public function finishView (FormView $ view , FormInterface $ form , array $ options )
4764 {
4865 parent ::finishView ($ view , $ form , $ options );
4966
50- $ view ->vars ['button_add_text ' ] = $ options ['button_add_text ' ];
51- $ view ->vars ['button_add_class ' ] = $ options ['button_add_class ' ];
52- $ view ->vars ['button_delete_text ' ] = $ options ['button_delete_text ' ];
53- $ view ->vars ['button_delete_class ' ] = $ options ['button_delete_class ' ];
67+ $ view ->vars ['button_add_options ' ] = $ options ['button_add_options ' ];
68+ $ view ->vars ['button_delete_options ' ] = $ options ['button_delete_options ' ];
5469 $ view ->vars ['prototype_name ' ] = $ options ['prototype_name ' ];
5570 }
5671
0 commit comments