33namespace DrupalCodeGenerator \Command ;
44
55use DrupalCodeGenerator \Utils ;
6+ use stdClass ;
67
78/**
89 * Implements field command.
@@ -17,7 +18,7 @@ final class Field extends ModuleGenerator {
1718 *
1819 * @var array
1920 */
20- protected $ subTypes = [
21+ private $ subTypes = [
2122 'boolean ' => [
2223 'label ' => 'Boolean ' ,
2324 'list ' => FALSE ,
@@ -154,50 +155,45 @@ protected function generate(array &$vars): void {
154155 // Indicates that at least one of sub-fields is of datetime type.
155156 $ vars ['datetime ' ] = FALSE ;
156157
158+ $ vars ['type_class ' ] = '{field_label|camelize}Item ' ;
159+ $ vars ['widget_class ' ] = '{field_label|camelize}Widget ' ;
160+ $ vars ['formatter_class ' ] = '{field_label|camelize}DefaultFormatter ' ;
161+
157162 for ($ i = 1 ; $ i <= $ vars ['subfield_count ' ]; $ i ++) {
158163 $ this ->io ->writeln (\sprintf ('<fg=green>%s</> ' , \str_repeat ('– ' , 50 )));
159164
160- $ vars ['name_ ' . $ i ] = $ this ->ask ("Label for sub-field # $ i " , "Value $ i " );
161- $ default_machine_name = Utils::human2machine ($ vars ['name_ ' . $ i ]);
162- $ vars ['machine_name_ ' . $ i ] = $ this ->ask ("Machine name for sub-field # $ i " , $ default_machine_name );
163- $ type = $ this ->choice ("Type of sub-field # $ i " , $ type_choices , 'Text ' );
164-
165- $ vars ['type_class ' ] = '{field_label|camelize}Item ' ;
166- $ vars ['widget_class ' ] = '{field_label|camelize}Widget ' ;
167- $ vars ['formatter_class ' ] = '{field_label|camelize}DefaultFormatter ' ;
165+ $ subfield = new stdClass ();
168166
169- $ definition = $ this ->subTypes [$ type ];
170- $ vars ['type_ ' . $ i ] = $ definition ['label ' ];
167+ $ subfield ->name = $ this ->ask ("Label for sub-field # $ i " , "Value $ i " );
168+ $ subfield ->machineName = $ this ->ask ("Machine name for sub-field # $ i " , Utils::human2machine ($ subfield ->name ));
169+ $ type = $ this ->choice ("Type of sub-field # $ i " , $ type_choices , 'Text ' );
171170
172171 if ($ type == 'datetime ' ) {
173- $ vars [ ' date_type_ ' . $ i ] = $ this ->choice ("Date type for sub-field # $ i " , $ this ->dateTypes , 'Date only ' );
172+ $ subfield -> dateType = $ this ->choice ("Date type for sub-field # $ i " , $ this ->dateTypes , 'Date only ' );
174173 }
175174
175+ $ definition = $ this ->subTypes [$ type ];
176176 if ($ definition ['list ' ]) {
177- $ vars [ ' list_ ' . $ i ] = $ this ->confirm ("Limit allowed values for sub-field # $ i? " , FALSE );
177+ $ subfield -> list = $ this ->confirm ("Limit allowed values for sub-field # $ i? " , FALSE );
178178 }
179- $ vars ['required_ ' . $ i ] = $ this ->confirm ("Make sub-field # $ i required? " , FALSE );
180-
181- $ machine_name = $ vars ['machine_name_ ' . $ i ];
179+ $ subfield ->required = $ this ->confirm ("Make sub-field # $ i required? " , FALSE );
182180
183- // Group sub-field vars.
181+ // Build sub-field vars.
184182 $ vars ['subfields ' ][$ i ] = [
185- 'name ' => $ vars [ ' name_ ' . $ i ] ,
186- 'machine_name ' => $ machine_name ,
183+ 'name ' => $ subfield -> name ,
184+ 'machine_name ' => $ subfield -> machineName ,
187185 'type ' => $ type ,
188186 'data_type ' => $ definition ['data_type ' ],
189- 'list ' => !empty ($ vars [ ' list_ ' . $ i ] ),
190- 'allowed_values_method ' => 'allowed ' . Utils::camelize ($ vars [ ' name_ ' . $ i ] , TRUE ) . 'Values ' ,
191- 'required ' => $ vars [ ' required_ ' . $ i ] ,
187+ 'list ' => !empty ($ subfield -> list ),
188+ 'allowed_values_method ' => 'allowed ' . Utils::camelize ($ subfield -> name , TRUE ) . 'Values ' ,
189+ 'required ' => $ subfield -> required ,
192190 'link ' => $ definition ['link ' ],
193191 ];
194- if (isset ($ vars ['date_type_ ' . $ i ])) {
195- $ date_type = $ vars ['date_type_ ' . $ i ];
196- $ vars ['subfields ' ][$ i ]['date_type ' ] = $ date_type ;
192+ if (isset ($ subfield ->dateType )) {
193+ $ vars ['subfields ' ][$ i ]['date_type ' ] = $ subfield ->dateType ;
197194 // Back to date type ID.
198- $ vars ['subfields ' ][$ i ]['date_storage_format ' ] = $ date_type == 'date ' ? 'Y-m-d ' : 'Y-m-d\TH:i:s ' ;
195+ $ vars ['subfields ' ][$ i ]['date_storage_format ' ] = $ subfield -> dateType == 'date ' ? 'Y-m-d ' : 'Y-m-d\TH:i:s ' ;
199196 }
200- unset($ vars ['name_ ' . $ i ], $ vars ['machine_name_ ' . $ i ], $ vars ['type_ ' . $ i ], $ vars ['list_ ' . $ i ], $ vars ['required_ ' . $ i ], $ vars ['date_type_ ' . $ i ]);
201197
202198 if ($ definition ['random ' ]) {
203199 $ vars ['random ' ] = TRUE ;
0 commit comments