Skip to content

Commit

Permalink
Use JSON Forms rules in layouts
Browse files Browse the repository at this point in the history
  • Loading branch information
Dominic Tubach committed Jul 10, 2024
1 parent c83c140 commit 032eca3
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/Form/Layout/AbstractLayoutArrayFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,20 @@
use Assert\Assertion;
use Drupal\Core\Form\FormStateInterface;
use Drupal\json_forms\Form\AbstractConcreteFormArrayFactory;
use Drupal\json_forms\Form\Control\Rule\StatesArrayFactoryInterface;
use Drupal\json_forms\Form\FormArrayFactoryInterface;
use Drupal\json_forms\JsonForms\Definition\Control\ControlDefinition;
use Drupal\json_forms\JsonForms\Definition\DefinitionInterface;
use Drupal\json_forms\JsonForms\Definition\Layout\LayoutDefinition;

abstract class AbstractLayoutArrayFactory extends AbstractConcreteFormArrayFactory {

private StatesArrayFactoryInterface $statesArrayFactory;

public function __construct(StatesArrayFactoryInterface $statesArrayFactory) {
$this->statesArrayFactory = $statesArrayFactory;
}

/**
* {@inheritDoc}
*/
Expand All @@ -43,6 +50,10 @@ public function createFormArray(
/** @var \Drupal\json_forms\JsonForms\Definition\Layout\LayoutDefinition $definition */
$form = $this->createBasicFormArray($definition);

if (NULL !== $definition->getRule()) {
$form['#states'] = $this->statesArrayFactory->createStatesArray($definition->getRule());
}

return array_merge($form, $this->createElementsFormArray($definition, $formState, $formArrayFactory));
}

Expand Down
4 changes: 4 additions & 0 deletions src/JsonForms/Definition/Layout/LayoutDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ public function getKeywordValue(string $keyword, $default = NULL) {
return $this->layoutSchema->{$keyword} ?? $default;
}

public function getRule(): ?\stdClass {
return $this->layoutSchema->rule ?? NULL;
}

public function getType(): string {
return $this->layoutSchema->type;
}
Expand Down

0 comments on commit 032eca3

Please sign in to comment.