php – 禁用Symfony2选择

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 禁用Symfony2选择脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在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
                ));
            }
        );

谢谢你的建议!

脚本宝典总结

以上是脚本宝典为你收集整理的php – 禁用Symfony2选择全部内容,希望文章能够帮你解决php – 禁用Symfony2选择所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。