@@ -110,6 +110,13 @@ class WebformSubmissionForm extends ContentEntityForm {
110
110
*/
111
111
protected $ webformEntityReferenceManager ;
112
112
113
+ /**
114
+ * The webform submission generation service.
115
+ *
116
+ * @var \Drupal\webform\WebformSubmissionGenerateInterface
117
+ */
118
+ protected $ generate ;
119
+
113
120
/**
114
121
* The webform settings.
115
122
*
@@ -156,8 +163,10 @@ class WebformSubmissionForm extends ContentEntityForm {
156
163
* The webform submission conditions (#states) validator.
157
164
* @param \Drupal\webform\WebformEntityReferenceManagerInterface $webform_entity_reference_manager
158
165
* The webform entity reference manager.
166
+ * @param \Drupal\webform\WebformSubmissionGenerateInterface $submission_generate
167
+ * The webform submission generation service.
159
168
*/
160
- public function __construct (EntityManagerInterface $ entity_manager , RendererInterface $ renderer , AliasManagerInterface $ alias_manager , PathValidatorInterface $ path_validator , WebformRequestInterface $ request_handler , WebformElementManagerInterface $ element_manager , WebformThirdPartySettingsManagerInterface $ third_party_settings_manager , WebformMessageManagerInterface $ message_manager , WebformTokenManagerInterface $ token_manager , WebformSubmissionConditionsValidator $ conditions_validator , WebformEntityReferenceManagerInterface $ webform_entity_reference_manager ) {
169
+ public function __construct (EntityManagerInterface $ entity_manager , RendererInterface $ renderer , AliasManagerInterface $ alias_manager , PathValidatorInterface $ path_validator , WebformRequestInterface $ request_handler , WebformElementManagerInterface $ element_manager , WebformThirdPartySettingsManagerInterface $ third_party_settings_manager , WebformMessageManagerInterface $ message_manager , WebformTokenManagerInterface $ token_manager , WebformSubmissionConditionsValidator $ conditions_validator , WebformEntityReferenceManagerInterface $ webform_entity_reference_manager, WebformSubmissionGenerateInterface $ submission_generate ) {
161
170
parent ::__construct ($ entity_manager );
162
171
$ this ->renderer = $ renderer ;
163
172
$ this ->requestHandler = $ request_handler ;
@@ -170,6 +179,8 @@ public function __construct(EntityManagerInterface $entity_manager, RendererInte
170
179
$ this ->tokenManager = $ token_manager ;
171
180
$ this ->conditionsValidator = $ conditions_validator ;
172
181
$ this ->webformEntityReferenceManager = $ webform_entity_reference_manager ;
182
+ $ this ->generate = $ submission_generate ;
183
+
173
184
}
174
185
175
186
/**
@@ -187,7 +198,9 @@ public static function create(ContainerInterface $container) {
187
198
$ container ->get ('webform.message_manager ' ),
188
199
$ container ->get ('webform.token_manager ' ),
189
200
$ container ->get ('webform_submission.conditions_validator ' ),
190
- $ container ->get ('webform.entity_reference_manager ' )
201
+ $ container ->get ('webform.entity_reference_manager ' ),
202
+ $ container ->get ('webform_submission.generate ' )
203
+
191
204
);
192
205
}
193
206
@@ -217,11 +230,26 @@ public function getFormId() {
217
230
218
231
/**
219
232
* {@inheritdoc}
233
+ *
234
+ * This is the best place to override an entity form's default settings
235
+ * because is is called immediately after the form object is initialized.
236
+ *
237
+ * @see \Drupal\Core\Entity\EntityFormBuilder::getForm
220
238
*/
221
239
public function setEntity (EntityInterface $ entity ) {
222
240
/** @var \Drupal\webform\WebformSubmissionInterface $entity */
223
241
$ webform = $ entity ->getWebform ();
224
242
243
+ // If ?_webform_test is defined for the current webform, override
244
+ // the 'add' operation with 'test' operation and generate test data.
245
+ if ($ this ->operation === 'add ' &&
246
+ $ this ->getRequest ()->query ->get ('_webform_test ' ) === $ webform ->id () &&
247
+ $ webform ->access ('test ' )
248
+ ) {
249
+ $ this ->operation = 'test ' ;
250
+ $ entity ->setData ($ this ->generate ->getData ($ webform ));
251
+ }
252
+
225
253
// Get the source entity and allow webform submission to be used as a source
226
254
// entity.
227
255
$ this ->sourceEntity = $ this ->requestHandler ->getCurrentSourceEntity (['webform ' ]);
0 commit comments