Как да променя формуляр на Symfony2 въз основа на стойността на полето, избрана от потребителя?

Имам тип Блог и искам определени полета да се добавят към формуляра само ако потребителят направи определен избор в полето избор. Чувал съм за EventListener, но не мисля, че има FormEvent, за който мога да се абонирам, така че слушателят да може действително да проследи избраното събитие.

Как мога да постигна това?

Това е моят BlogType:

namespace Blogger\BlogBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Blogger\BlogBundle\Form\EventListener\AddAuthorFieldSubscriber;

class BlogType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title')
            ->add('blog')
            ->add('category', 'entity', array(
                'class' => 'BloggerBlogBundle:Category',
                'property' => 'name',
            )
            ->add('onlyifdefaultcategory')
        );
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Blogger\BlogBundle\Entity\Blog',
            'cascade_validation' => true,
        ));
    }

    public function getName()
    {
        return 'blogger_blogbundle_blogtype';
    }
}

person Vadym    schedule 24.03.2013    source източник
comment
Някакво решение за това? Имам същия проблем, попълнете формуляр, след като потребителят направи определен избор в полето за избор.   -  person agapitocandemor    schedule 24.10.2013


Отговори (2)


Прав сте, когато казвате, че трябва да използвате слушател на събития, за да постигнете това. Има много добра статия в готварската книга на Symfony: Ето го готварската книга.

Трябва да проверите частта „Персонализиране на вашия формуляр въз основа на основните данни“.

Ако имате нужда от повече информация, кажете ни, но мисля, че първият пример е точно това, от което се нуждаете.

person Elorfin    schedule 24.10.2013

Мисля, че е възможно само с помощта на JavaScript. Можете да създадете персонализиран Тип и да декларирате приспособление за този Тип с JS, което го прави възможно.

За изграждане на форма, ето пример със слушатели. Вижте това: ръководство за symfony

person sean662    schedule 24.03.2013