Disable backend validation for choice field in Symfony 2 Type

后端 未结 3 1016
悲哀的现实
悲哀的现实 2021-01-02 01:05

Is it possible to disable backend (server-side) validation for the specified field?

Wnen Im trying to send form with dynamicly loaded options I get error \"ERROR: T

相关标签:
3条回答
  • 2021-01-02 01:26

    I found the solution

    Symfony2.4 form 'This form should not contain extra fields' error

    For more details: http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#cookbook-dynamic-form-modification-suppressing-form-validation

    0 讨论(0)
  • 2021-01-02 01:34

    Add this inside buildForm method in your form type class so that you can validate an input field value rather a choice from a select field value;

    $builder->addEventListener(
        FormEvents::PRE_SUBMIT,
    
        function (FormEvent $event) {
            $form = $event->getForm();
    
            if ($form->has('field')) {
                $form->remove('field');
                $form->add(
                    'field', 
                    'text', 
                    ['required' => false]
                )
            }
        }
    );
    
    0 讨论(0)
  • 2021-01-02 01:49

    It's confusing but this behaviour is not really validation related as it is caused by the "ChoiceToValueTransformer" which indeed searches for entries in your pre-declared list. If your list is empty or you want to disable the transformer you can simply reset it.

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('yourField', 'choice', array('required'=>false));
    
        //more fields...
    
        $builder->get('yourField')->resetViewTransformers();
    }
    

    Then your custom defined validation will step in (if it exists).

    0 讨论(0)
提交回复
热议问题