脚本宝典收集整理的这篇文章主要介绍了php – Symfony2表单编号输入超过20亿,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为Transaction的实体,其中一个名为“quantITy”的字段已被定义为BigINT,如下所示:
/** * @ORM\Column(tyPE="bigint",nullable=true) */ PRotected $quantity;
允许我填充事务的Symfony表单使用“数字”类型:
$builder->add('quantity','number',array( 'label' => 'Quantity','grouping' => 1,'required' => true,));
这一切都像一个魅力,除非数量值高于约. 20亿(我还没有确切地确认这个数字).对我来说,它看起来像32位边界问题.
当发生这种情况时,它抱怨“数字解析失败”.在下面的屏幕截图中我输入了30亿,它出现了这个错误:
我不相信问题是Transaction实体中的bigint,因为这是一个8字节的值,应该能够容纳64位数据.
我正在使用Symfony 2.7.16(此问题在早期版本中是相同的).任何帮助或建议最受欢迎.
谢谢!
PHP -r 'echo PHP_INT_MAX;' 2147483647
如果您可以安装64位PHP build,我建议使用http://dotdeb.org,因为它们提供最新的稳定版本.
要确保您的应用程序不是32位运行,请添加到composer.json
"require": { "PHP-64bit": ">=5.3.9" }
如果您尝试在非64位系统上安装,则Composer将失败
如果不能64位
你恐怕需要使用字符串.
创建自定义表单类型,扩展TextType并将值保持为字符串,但通过覆盖呈现为数字输入
/** * {@inheritdoc} */ public function getBlockPrefix() { return 'integer'; }
以上是脚本宝典为你收集整理的php – Symfony2表单编号输入超过20亿全部内容,希望文章能够帮你解决php – Symfony2表单编号输入超过20亿所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。