加入收藏 | 设为首页 | 会员中心 | 我要投稿 岳阳站长网 (https://www.0730zz.com/)- 物联平台、混合云存储、数据仓库、智能推荐、智能数字人!
当前位置: 首页 > 编程开发 > PHP > 正文

php – Symfony2表单编号输入超过20亿

发布时间:2020-08-16 06:46:03 所属栏目:PHP 来源:互联网
导读:我正在寻求一些关于我的Symfony数字输入问题的帮助,如下所述.我希望能够在我的表单中输入非常大的数字,但目前仅限于大约20亿的最大值. 我有一个名为Transaction的实体,其中一个名为“quantity”的字段已被定义为BIGINT,如下所示: /** * @ORMColumn(type=bigi

我正在寻求一些关于我的Symfony数字输入问题的帮助,如下所述.我希望能够在我的表单中输入非常大的数字,但目前仅限于大约20亿的最大值.

我有一个名为Transaction的实体,其中一个名为“quantity”的字段已被定义为BIGINT,如下所示:

/**
 * @ORMColumn(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(此问题在早期版本中是相同的).任何帮助或建议最受欢迎.

谢谢!

是的,这是32位问题.你可以输入确认
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';
}

(编辑:岳阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读