22
33namespace Loki \AdminComponents \Component \Form ;
44
5+ use Loki \AdminComponents \Form \Fieldset \FieldsetsResolver ;
6+ use Loki \AdminComponents \Form \Item \ItemResolver ;
57use Loki \AdminComponents \Ui \Button \ButtonsResolver ;
68use Loki \AdminComponents \Form \Field \Field ;
79use Loki \AdminComponents \Form \Field \FieldFactory ;
8- use Loki \AdminComponents \Form \Field \FieldResolver ;
10+ use Loki \AdminComponents \Form \Field \FieldsResolver ;
911use Loki \AdminComponents \Form \Fieldset \Fieldset ;
1012use Loki \AdminComponents \Form \Fieldset \FieldsetFactory ;
11- use Loki \AdminComponents \Form \ItemConvertorInterface ;
1213use Loki \AdminComponents \Ui \Button \Button ;
1314use Loki \AdminComponents \Ui \Button \ButtonFactory ;
1415use Loki \Components \Component \ComponentViewModel ;
1516use Magento \Framework \App \RequestInterface ;
16- use Magento \Framework \DataObject ;
1717use Magento \Framework \Exception \LocalizedException ;
1818use Magento \Framework \ObjectManagerInterface ;
1919use Magento \Framework \UrlFactory ;
20- use Throwable ;
2120
2221/**
2322 * @method FormRepository getRepository()
@@ -32,8 +31,10 @@ public function __construct(
3231 protected FieldFactory $ fieldFactory ,
3332 protected FieldsetFactory $ fieldsetFactory ,
3433 protected RequestInterface $ request ,
35- protected FieldResolver $ fieldResolver ,
34+ protected FieldsetsResolver $ fieldsetsResolver ,
35+ protected FieldsResolver $ fieldsResolver ,
3636 protected ButtonsResolver $ buttonsResolver ,
37+ protected ItemResolver $ itemResolver ,
3738 protected array $ itemFilters = [],
3839 ) {
3940 }
@@ -54,24 +55,12 @@ public function getJsData(): array
5455
5556 private function getItemData (): array
5657 {
57- try {
58- $ item = $ this ->getRepository ()->getItem ();
59- } catch (Throwable $ e ) {
60- $ this ->getContext ()->getMessageManager ()->addErrorMessage ($ e ->getMessage ());
61-
62- return [];
63- }
64-
65- if (false === $ item instanceof DataObject) {
66- return [];
67- }
68-
69- $ itemConvertor = $ this ->getBlock ()->getItemConvertor ();
70- if ($ itemConvertor instanceof ItemConvertorInterface) {
71- $ item = $ itemConvertor ->afterLoad ($ item );
72- }
58+ $ item = $ this ->itemResolver ->resolve (
59+ $ this ->getRepository (),
60+ $ this ->getBlock ()
61+ );
7362
74- return $ item ->toArray ();
63+ return $ item ->getData ();
7564 }
7665
7766 public function getIndexUrl (): string
@@ -85,9 +74,8 @@ public function getIndexUrl(): string
8574 public function getButtons (): array
8675 {
8776 return $ this ->buttonsResolver ->resolve (
77+ $ this ->getRepository (),
8878 $ this ->getBlock (),
89- $ this ->getRepository ()->getProvider (),
90- $ this ->getValue ()
9179 );
9280 }
9381
@@ -96,61 +84,10 @@ public function getButtons(): array
9684 */
9785 public function getFieldsets (): array
9886 {
99- $ fieldsetDefinitions = (array )$ this ->getBlock ()->getFieldsets ();
100- $ fieldsetLabel = 'Base ' ;
101- if (isset ($ fieldsetDefinitions ['base ' ])) {
102- $ fieldsetLabel = $ fieldsetDefinitions ['base ' ]['label ' ] ?? $ fieldsetDefinitions ['base ' ]['code ' ];
103- }
104-
105- $ fieldsets ['base ' ] = $ this ->fieldsetFactory ->create ('base ' , $ fieldsetLabel );
106-
107- foreach ($ fieldsetDefinitions as $ fieldsetCode => $ fieldsetDefinition ) {
108- if (empty ($ fieldsetCode )) {
109- $ fieldsetCode = 'base ' ;
110- }
111-
112- if (array_key_exists ($ fieldsetCode , $ fieldsets )) {
113- continue ;
114- }
115-
116- $ fieldsets [$ fieldsetCode ] = $ this ->fieldsetFactory ->create ($ fieldsetCode , $ fieldsetDefinition ['label ' ]);
117- }
118-
119- $ fieldDefinitions = (array )$ this ->getBlock ()->getFields ();
120-
121- $ fields = $ this ->fieldResolver ->resolve ($ this ->getRepository (), $ fieldDefinitions );
122-
123- foreach ($ fields as $ field ) {
124- $ fieldsetCode = (string )$ field ->getFieldset ();
125-
126- if (isset ($ fieldDefinitions [$ field ->getCode ()])) {
127- unset($ fieldDefinitions [$ field ->getCode ()]);
128- }
129-
130- if (!empty ($ fieldsetCode ) && array_key_exists ($ fieldsetCode , $ fieldsets )) {
131- $ fieldsets [$ fieldsetCode ]->addField ($ field );
132- continue ;
133- }
134-
135- $ fieldsets ['base ' ]->addField ($ field );
136- }
137-
138- foreach ($ fieldDefinitions as $ fieldDefinitionCode => $ fieldDefinition ) {
139- if (!isset ($ fieldDefinition ['code ' ])) {
140- $ fieldDefinition ['code ' ] = $ fieldDefinitionCode ;
141- }
142-
143- $ field = $ this ->fieldFactory ->create ($ this ->getBlock (), $ fieldDefinition );
144-
145- if (!empty ($ fieldsetCode ) && array_key_exists ($ fieldsetCode , $ fieldsets )) {
146- $ fieldsets [$ fieldsetCode ]->addField ($ field );
147- continue ;
148- }
149-
150- $ fieldsets ['base ' ]->addField ($ field );
151- }
152-
153- return $ fieldsets ;
87+ return $ this ->fieldsetsResolver ->resolve (
88+ $ this ->getRepository (),
89+ $ this ->getBlock (),
90+ );
15491 }
15592
15693 /**
@@ -160,12 +97,10 @@ public function getFieldsets(): array
16097 */
16198 public function getFields (): array
16299 {
163- $ fields = $ this ->fieldResolver ->resolve (
100+ return $ this ->fieldsResolver ->resolve (
164101 $ this ->getRepository (),
165102 (array )$ this ->getBlock ()->getFields (),
166103 );
167-
168- return $ fields ;
169104 }
170105
171106 private function getIndexUri (): string
0 commit comments