php – 禁用Symfony2选择
发布时间:2020-12-13 18:05:23 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试在Symfony2中实现动态表单.表单很简单,首先用户选择代理,然后根据该代理选择一个帐户.因此,在选择代理之前,帐户将被禁用. 在文本输入的情况下,read_only = true可以是一个解决方案,但select没有属性readonly.所以,我禁用了select,然后尝试使用jQue
我正在尝试在Symfony2中实现动态表单.表单很简单,首先用户选择代理,然后根据该代理选择一个帐户.因此,在选择代理之前,帐户将被禁用.
在文本输入的情况下,read_only => true可以是一个解决方案,但select没有属性readonly.所以,我禁用了select,然后尝试使用jQuery启用select: $('#form select').prop('disabled',false); 问题是在服务器端,Symfony无法处理禁用的表单字段.它的值只是设置为null. 我想到了可能的解决方案.首先,我可以在控制器中手动设置字段值,因为我测试了表单字段值实际上在请求参数中,Symfony只是忽略处理它并将其映射到对象.我认为它会起作用,但这不是很好的解决方案. 其次,我可以通过一些客户端黑客禁用选择,或者向表单添加隐藏输入并使用Javascript手动设置它的值. 这里有标准解决方案吗? 我的表单实体如下所示: $builder->add('broker','entity',array( 'class' => 'MyBundle:Broker','property' => 'name','query_builder' => function(BrokerRepository $br) { return $br->getActiveBrokersQuery(); },'required' => true,'empty_value' => 'Choose a broker',)); $builder->add('accountType',array( 'class' => 'MyBundle:AccountType','empty_value' => 'Choose a broker first','disabled' => true,)); 如果我不禁用选择,一切正常,Symfony完美地处理请求.
我根据hakre的建议设法解决了这个问题.所以我需要告诉表单该字段不再被禁用.因此,我在表单中添加了一个PRE_SUBMIT事件,其中我在accountType字段上将disabled值设置为false.
$builder->addEventListener( FormEvents::PRE_SUBMIT,function(FormEvent $event) { $event->getForm()->add('accountType',array( 'class' => 'XXBundle:AccountType','disabled' => false )); } ); 谢谢你的建议! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |