W JAKI SPOSÓB PRZEKAZAĆ WŁASNE ZMIENNE DO FORMBUILDERA W SYMFONY3?

Wystarczy podczas tworzenia formularza dodać jako trzeci argument tablicę z naszymi dodatkowymi zmiennymi.

09-06-2017

Oto prosty przykład:


    $form = $this->createForm(FiltersType::class, null, array('test_1' => 10, 'test_2' => 20, 'test_3' => 30));


Aby móc wykorzystać powyższe zmienne, należy do resolvera który domyślnie jest zaimplementowany w formBuilderze dodać ich nazwy, oraz domyślne wartości. W klasie naszego formularza dodajemy następującą funkcję konfiguracji:


    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'test_1' => null,
            'test_2' => null,
            'test_3' => null,
        ));
		
    }


Po tej operacji, w tablicy $options która jest drugim argumentem funkcji buildForm, dostępne będą nasze zmienne które w łatwy sposób możemy wykorzystać:


    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
		
        if($options['test_1'] === 10){

            $builder
                ->add('name', TextType::class, 
                    array(
                        'required' => false,
                        'label'    => 'Nazwa:'
                    )
                )
            ;

        }

    }
	


  wstecz