Forms 如何根据用户选择的字段值修改Symfony2表单?
我有一个Blog类型,我希望只有当用户在select字段中进行了某种选择时,才能将某些字段添加到表单中。我听说过EventListener,但我不认为有一个FormEvent可以订阅,以便侦听器可以实际跟踪select事件 我怎样才能做到这一点 这是我的博客类型:Forms 如何根据用户选择的字段值修改Symfony2表单?,forms,symfony,event-listener,Forms,Symfony,Event Listener,我有一个Blog类型,我希望只有当用户在select字段中进行了某种选择时,才能将某些字段添加到表单中。我听说过EventListener,但我不认为有一个FormEvent可以订阅,以便侦听器可以实际跟踪select事件 我怎样才能做到这一点 这是我的博客类型: 我认为只有使用JavaScript才有可能。您可以使用JS创建自定义类型并声明该类型的小部件,这使其成为可能 对于构建表单,以下是侦听器示例。 勾选此项:您说必须使用事件侦听器来实现这一点是对的。Symfony cookbook中有一
我认为只有使用JavaScript才有可能。您可以使用JS创建自定义类型并声明该类型的小部件,这使其成为可能 对于构建表单,以下是侦听器示例。
勾选此项:您说必须使用事件侦听器来实现这一点是对的。Symfony cookbook中有一篇非常好的文章: 您必须检查“根据基础数据自定义表单”部分
如果您需要更多信息,请告诉我们,但我认为第一个示例正是您所需要的。有什么解决方案吗?我也有同样的问题,在用户在选择字段中做出特定选择后填写表单。
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';
}
}