Ajax symfony2-如何创建类型为“的表单字段”;“实体”;没有价值

Ajax symfony2-如何创建类型为“的表单字段”;“实体”;没有价值,ajax,forms,symfony,Ajax,Forms,Symfony,我有一个带有EntityType字段的表单。从中获取值的表已增长,并且呈现的选择框使页面变大(=加载缓慢) 我替换了这个: ->add( 'contact', 'entity', array( 'class' => 'CRMCoreBundle:Contact', 'required' => false,

我有一个带有
EntityType
字段的表单。从中获取值的表已增长,并且呈现的选择框使页面变大(=加载缓慢)

我替换了这个:

        ->add(
            'contact',
            'entity',
            array(
                'class' => 'CRMCoreBundle:Contact',
                'required' => false,
                'empty_data' => null,
            )
        )
与:

为了呈现一个空的selectbox,在前端,我使用AJAX填充并自动完成selectbox


问题是,现在当我提交表格时,它是无效的。有什么想法吗?

它没有通过验证,因为在创建表单时表单组件没有添加您提交的值。这是为了保护表单不接受未经授权的值

正确的方法是让ajax请求表单使用表单事件更新后端的select字段,然后用适当的值更新显示的select字段


更多关于表单活动的信息-

感谢您的回复。我已经读过了,这里描述的用例都不适合我(我想第三个是最接近的),而且我怀疑他们最近没有测试它。在他们的示例中,他们在POST_SUBMIT事件处理程序中向表单添加了一个字段。但当您尝试这样做时,会抛出一个异常:“您无法将子项添加到已提交的表单500内部服务器错误-AlreadySubmittedException”当您将
POST\u submitted
事件侦听器添加到一个字段而不是整个表单时,它会起作用。另外,请看这里-。更多关于动态表单的信息。
          ->add(
            'contact',
            'entity',
            array(
                'class' => 'CRMCoreBundle:Contact',
                'choices' => array(),
                'required' => false,
                'empty_data' => null,
            )
        )