Skip to content

Commit

Permalink
Merge pull request #4101 from gperdomor/feature/form-options-route
Browse files Browse the repository at this point in the history
[ResourceBundle] Pass form options in route configuration
  • Loading branch information
Paweł Jędrzejewski committed Feb 12, 2016
2 parents afc57e8 + fdacfdc commit 785af00
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 5 deletions.
Expand Up @@ -122,7 +122,27 @@ public function getTemplate($name)
*/
public function getFormType()
{
return $this->parameters->get('form', sprintf('%s_%s', $this->metadata->getApplicationName(), $this->metadata->getName()));
$form = $this->parameters->get('form', sprintf('%s_%s', $this->metadata->getApplicationName(), $this->metadata->getName()));

if (is_array($form) && array_key_exists('type', $form)) {
return $form['type'];
}

return $form;
}

/**
* @return mixed|null
*/
public function getFormOptions()
{
$form = $this->parameters->get('form', sprintf('%s_%s', $this->metadata->getApplicationName(), $this->metadata->getName()));

if (is_array($form) && array_key_exists('options', $form)) {
return $form['options'];
}

return [];
}

/**
Expand Down
Expand Up @@ -43,10 +43,12 @@ public function create(RequestConfiguration $requestConfiguration, ResourceInter
$formType = new $formType();
}

$formOptions = $requestConfiguration->getFormOptions();

if ($requestConfiguration->isHtmlRequest()) {
return $this->formFactory->create($formType, $resource);
return $this->formFactory->create($formType, $resource, $formOptions);
}

return $this->formFactory->createNamed('', $formType, $resource, ['csrf_protection' => false]);
return $this->formFactory->createNamed('', $formType, $resource, array_merge($formOptions, ['csrf_protection' => false]));
}
}
Expand Up @@ -87,9 +87,25 @@ function it_generates_form_type(MetadataInterface $metadata, Parameters $paramet

$parameters->get('form', 'sylius_product')->willReturn('sylius_product');
$this->getFormType()->shouldReturn('sylius_product');
$this->getFormOptions()->shouldReturn([]);

$parameters->get('form', 'sylius_product')->willReturn('sylius_product_pricing');
$this->getFormType()->shouldReturn('sylius_product_pricing');
$this->getFormOptions()->shouldReturn([]);
}

function it_generates_form_type_with_array_configuration(MetadataInterface $metadata, Parameters $parameters)
{
$metadata->getApplicationName()->willReturn('sylius');
$metadata->getName()->willReturn('product');

$parameters->get('form', 'sylius_product')->willReturn(['type'=> 'sylius_product', 'options' => ['validation_groups' => ['sylius']]]);
$this->getFormType()->shouldReturn('sylius_product');
$this->getFormOptions()->shouldReturn(['validation_groups' => ['sylius']]);

$parameters->get('form', 'sylius_product')->willReturn(['type'=> 'sylius_product_pricing', 'options' => ['validation_groups' => ['sylius', 'custom_group']]]);
$this->getFormType()->shouldReturn('sylius_product_pricing');
$this->getFormOptions()->shouldReturn(['validation_groups' => ['sylius', 'custom_group']]);
}

function it_generates_route_names(MetadataInterface $metadata, Parameters $parameters)
Expand Down
Expand Up @@ -48,7 +48,8 @@ function it_creates_appropriate_form_based_on_configuration(
) {
$requestConfiguration->isHtmlRequest()->willReturn(true);
$requestConfiguration->getFormType()->willReturn('sylius_product_pricing');
$formFactory->create('sylius_product_pricing', $resource)->willReturn($form);
$requestConfiguration->getFormOptions()->willReturn([]);
$formFactory->create('sylius_product_pricing', $resource, Argument::type('array'))->willReturn($form);

$this->create($requestConfiguration, $resource)->shouldReturn($form);
}
Expand All @@ -61,6 +62,7 @@ function it_creates_form_without_root_name_and_disables_csrf_protection_for_non_
) {
$requestConfiguration->isHtmlRequest()->willReturn(false);
$requestConfiguration->getFormType()->willReturn('sylius_product_api');
$requestConfiguration->getFormOptions()->willReturn([]);
$formFactory->createNamed('', 'sylius_product_api', $resource, ['csrf_protection' => false])->willReturn($form);

$this->create($requestConfiguration, $resource)->shouldReturn($form);
Expand All @@ -74,7 +76,8 @@ function it_creates_the_object_if_form_is_a_class_name(
) {
$requestConfiguration->isHtmlRequest()->willReturn(true);
$requestConfiguration->getFormType()->willReturn(TextType::class);
$formFactory->create(Argument::type(TextType::class), $resource)->willReturn($form);
$requestConfiguration->getFormOptions()->willReturn([]);
$formFactory->create(Argument::type(TextType::class), $resource, Argument::type('array'))->willReturn($form);

$this->create($requestConfiguration, $resource)->shouldReturn($form);
}
Expand Down

0 comments on commit 785af00

Please sign in to comment.