Варианты подчинения - PullRequest
       6

Варианты подчинения

0 голосов
/ 07 сентября 2018

Как я могу передать параметры формы подчиненной форме?

В приведенном ниже примере у меня объявлена ​​опция «специальный». Я хочу получить доступ к этой опции "special" в моей подчиненной форме.

Моя основная форма:

class DemandeType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('title', TextType::class, []);

        $builder->add('service_agent', ServiceType::class, [
            'mapped' => false
        ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'special' => true
        ]);
    }

И моя подчиненная:

class ServiceType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        dump($options['special']);
        $builder->add('service', TextType::class, []);

        $builder->add('agent', TextType::class, [
            'mapped' => false
        ]);
    }
    public function configureOptions(OptionsResolver $resolver)
    {
    }

1 Ответ

0 голосов
/ 07 сентября 2018

Я отвечаю на мой вопрос.

Я должен объявить опцию "special" в подчиненной форме. И опция этого поля доступна в основной форме.

Вот так:

class DemandeType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('title', TextType::class, []);

        $builder->add('service_agent', ServiceType::class, [
            'mapped' => false,
            'special' => $options['special']
        ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'special' => true
        ]);
    }

А в моей подчиненной форме:

class ServiceType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        dump($options['special']); // It's OK :)
        $builder->add('service', TextType::class, []);

        $builder->add('agent', TextType::class, [
            'mapped' => false
        ]);
    }
    public function configureOptions(OptionsResolver $resolver)
    {
       $resolver->setDefaults([
            'special' => true
        ]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...