diff --git a/src/Limenius/Liform/Transformer/AbstractTransformer.php b/src/Limenius/Liform/Transformer/AbstractTransformer.php index 0068b8d..14ca2d0 100644 --- a/src/Limenius/Liform/Transformer/AbstractTransformer.php +++ b/src/Limenius/Liform/Transformer/AbstractTransformer.php @@ -192,4 +192,14 @@ protected function isRequired(FormInterface $form) { return $form->getConfig()->getOption('required'); } + + /** + * @param FormInterface $form + * + * @return boolean + */ + protected function isDisabled(FormInterface $form) + { + return $form->getConfig()->getOption('disabled'); + } } diff --git a/src/Limenius/Liform/Transformer/ArrayTransformer.php b/src/Limenius/Liform/Transformer/ArrayTransformer.php index 361db01..9bcf86e 100644 --- a/src/Limenius/Liform/Transformer/ArrayTransformer.php +++ b/src/Limenius/Liform/Transformer/ArrayTransformer.php @@ -52,10 +52,6 @@ public function transform(FormInterface $form, array $extensions = [], $widget = $transformerData = $this->resolver->resolve($field); $transformedChild = $transformerData['transformer']->transform($field, $extensions, $transformerData['widget']); $children[] = $transformedChild; - - if ($transformerData['transformer']->isRequired($field)) { - $required[] = $field->getName(); - } } if (empty($children)) { diff --git a/src/Limenius/Liform/Transformer/CompoundTransformer.php b/src/Limenius/Liform/Transformer/CompoundTransformer.php index f12df2d..6761632 100644 --- a/src/Limenius/Liform/Transformer/CompoundTransformer.php +++ b/src/Limenius/Liform/Transformer/CompoundTransformer.php @@ -49,6 +49,7 @@ public function transform(FormInterface $form, array $extensions = [], $widget = $data = []; $order = 1; $required = []; + $disabled = []; foreach ($form->all() as $name => $field) { $transformerData = $this->resolver->resolve($field); @@ -60,18 +61,20 @@ public function transform(FormInterface $form, array $extensions = [], $widget = if ($transformerData['transformer']->isRequired($field)) { $required[] = $field->getName(); } + + if ($transformerData['transformer']->isDisabled($field)) { + $disabled[] = $field->getName(); + } } $schema = [ 'title' => $form->getConfig()->getOption('label'), 'type' => 'object', 'properties' => $data, + 'required' => $required, + 'disabled' => $disabled, ]; - if (!empty($required)) { - $schema['required'] = $required; - } - $innerType = $form->getConfig()->getType()->getInnerType(); $schema = $this->addCommonSpecs($form, $schema, $extensions, $widget);