Is it possible to set a default for all Symfony FormTypes?
We are currently working on an API Backend based on Symfony (3.3). In the Frontend we have our entities as objects looking like: {"id": 1, "username": "foo" ..... }
If we want to update the entity, we JSON.stringfy the object and send it to the server.
But if we bind the request to our entities via $form->submit($request)
we get an error ("This form should not contain extra fields.") because we don't have (and don't want to use!) "id" in out FormTypes.
So we have to set allow_extra_fields to true in every single FormType
public function setDefaultOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['allow_extra_fields' => true]);
}
Is there a way to configure this as a default for all FormTypes (without extending an custom FormType or something like this)?
You can create a form type extension to change this default value to true for all form types.
Form type extensions are incredibly powerful: they allow you to modify any existing form field types across the entire system.
class MyFormTypeExtension extends AbstractTypeExtension
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'allow_extra_fields' => true,
));
}
public static function getExtendedTypes(): iterable
{
return [FormType::class];
}
}
See more about how to register type extensions in Official documentation.
Note: The allow_extra_fields option is defined in FormTypeValidatorExtension , so make sure your custom type extension is registered after it to override the default value, otherwise use the priority tag attribute to ensure it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With