4

ブログタイプがあり、ユーザーが選択フィールドで特定の選択を行った場合にのみ、特定のフィールドをフォームに追加したいと考えています。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';
    }
}
4

2 に答える 2

-1

JavaScriptを使用するだけで可能だと思います。カスタムTypeを作成し、JS を使用してこのTypeのウィジェットを宣言できます。これにより、それが可能になります。

フォームを作成するための、リスナーを使用した例を次に示します。これを確認してください: symfony マニュアル

于 2013-03-24T14:24:24.237 に答える