Loading core/lib/Drupal/Core/Recipe/InputConfigurator.php +7 −6 Original line number Diff line number Diff line Loading @@ -25,11 +25,11 @@ final class InputConfigurator { private array $data = []; /** * The collected input values, or NULL if none have been collected yet. * The collected input values. * * @var mixed[]|null * @var mixed[] */ private ?array $values = NULL; private array $values = []; /** * @param array<string, array<string, mixed>> $definitions Loading Loading @@ -96,7 +96,7 @@ public function getDataDefinitions(): array { * The collected input values, keyed by name. */ public function getValues(): array { return $this->values ?? []; return $this->values; } /** Loading Loading @@ -131,13 +131,15 @@ public function describeAll(): array { * @throws \Symfony\Component\Validator\Exception\ValidationFailedException * Thrown if any of the collected values violate their validation * constraints. * @throws \LogicException * Thrown if input values have already been collected for this recipe. */ public function collectAll(InputCollectorInterface $collector, array &$processed = []): void { // Don't bother collecting values for a recipe we've already seen. if (in_array($this->prefix, $processed, TRUE)) { return; } if (is_array($this->values)) { if ($this->values) { throw new \LogicException('Input values cannot be changed once they have been set.'); } // First, collect values for the recipe's dependencies. Loading @@ -146,7 +148,6 @@ public function collectAll(InputCollectorInterface $collector, array &$processed $dependency->input->collectAll($collector, $processed); } $this->values = []; foreach ($this->data as $key => $data) { $definition = $data->getDataDefinition(); Loading core/modules/system/tests/src/Functional/Form/RecipeFormInputTest.php +1 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public function testRecipeInputViaForm(): void { // All recipe inputs are required, except for checkboxes, for which that // behavior makes no sense. $this->submitForm(['input_test[owner]' => ''], 'Apply recipe'); $assert_session->statusCodeEquals(200); $assert_session->statusMessageContains("Site owner's name field is required.", 'error'); $assert_session->statusMessageNotContains('Allow mischief field is required.', 'error'); // All inputs should be validated with their own constraints. Loading core/tests/fixtures/recipes/input_test/recipe.yml +4 −0 Original line number Diff line number Diff line name: Input Test recipes: # Depend on another recipe in order to prove that we can collect input # from recipes that depend on other recipes. - no_extensions input: owner: data_type: string Loading Loading
core/lib/Drupal/Core/Recipe/InputConfigurator.php +7 −6 Original line number Diff line number Diff line Loading @@ -25,11 +25,11 @@ final class InputConfigurator { private array $data = []; /** * The collected input values, or NULL if none have been collected yet. * The collected input values. * * @var mixed[]|null * @var mixed[] */ private ?array $values = NULL; private array $values = []; /** * @param array<string, array<string, mixed>> $definitions Loading Loading @@ -96,7 +96,7 @@ public function getDataDefinitions(): array { * The collected input values, keyed by name. */ public function getValues(): array { return $this->values ?? []; return $this->values; } /** Loading Loading @@ -131,13 +131,15 @@ public function describeAll(): array { * @throws \Symfony\Component\Validator\Exception\ValidationFailedException * Thrown if any of the collected values violate their validation * constraints. * @throws \LogicException * Thrown if input values have already been collected for this recipe. */ public function collectAll(InputCollectorInterface $collector, array &$processed = []): void { // Don't bother collecting values for a recipe we've already seen. if (in_array($this->prefix, $processed, TRUE)) { return; } if (is_array($this->values)) { if ($this->values) { throw new \LogicException('Input values cannot be changed once they have been set.'); } // First, collect values for the recipe's dependencies. Loading @@ -146,7 +148,6 @@ public function collectAll(InputCollectorInterface $collector, array &$processed $dependency->input->collectAll($collector, $processed); } $this->values = []; foreach ($this->data as $key => $data) { $definition = $data->getDataDefinition(); Loading
core/modules/system/tests/src/Functional/Form/RecipeFormInputTest.php +1 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public function testRecipeInputViaForm(): void { // All recipe inputs are required, except for checkboxes, for which that // behavior makes no sense. $this->submitForm(['input_test[owner]' => ''], 'Apply recipe'); $assert_session->statusCodeEquals(200); $assert_session->statusMessageContains("Site owner's name field is required.", 'error'); $assert_session->statusMessageNotContains('Allow mischief field is required.', 'error'); // All inputs should be validated with their own constraints. Loading
core/tests/fixtures/recipes/input_test/recipe.yml +4 −0 Original line number Diff line number Diff line name: Input Test recipes: # Depend on another recipe in order to prove that we can collect input # from recipes that depend on other recipes. - no_extensions input: owner: data_type: string Loading