小编rit*_*ter的帖子

Symfony2表单编号输入超过20亿

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

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

/**
 * @ORM\Column(type="bigint", nullable=true)
 */
protected $quantity;
Run Code Online (Sandbox Code Playgroud)

允许我填充事务的Symfony表单使用"数字"类型:

    $builder->add('quantity', 'number', array(
        'label'             => 'Quantity',
        'grouping'          => 1,
        'required'          => true,
    ));
Run Code Online (Sandbox Code Playgroud)

这一切都像一个魅力,除非数量值高于约.20亿(我还没有确切地确认这个数字).对我来说,它看起来像32位边界问题.

当发生这种情况时,它抱怨"数字解析失败".在下面的屏幕截图中我输入了30亿,它出现了这个错误:

我输入30亿的例子

我不相信问题是Transaction实体中的bigint,因为这是一个8字节的值,应该能够容纳64位数据.

我正在使用Symfony 2.7.16(此问题在早期版本中是相同的).任何帮助或建议最受欢迎.

谢谢!

php symfony

6
推荐指数
1
解决办法
373
查看次数

Symfony2在表单中使用时区渲染datetime

在我的系统中,数据库时间戳记录为UTC值.

每个用户的个人资料中都记录了一个时区.登录时,时区值将从其配置文件传输到其会话($ session-> set('timezone',$ tz);).

我的大多数代码都使用Sonata INTL包,因此用户可以看到正确显示其时区的日期时间值,表单字段除外.

我最近在一些Symfony2类型上发现了model_timezone和view_timezone字段.我可以让字段显示正确的值(如下面的代码片段所示),但是我想了解如何从用户会话填充view_timezone?(我猜我可以通过某种方式传递$选项?)

事件控制器片段:

$object = <object loaded>;

$form = $this->createForm(new MyEventType(), $object);
Run Code Online (Sandbox Code Playgroud)

MyEventType表单片段:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('id', null, array(
        'label'         => 'Event ID',
    ));

    $builder->add('changed', 'datetime', array(
        'date_widget'       => 'single_text',
        'date_format'       => \IntlDateFormatter::SHORT,
        'time_widget'       => 'single_text',

        'model_timezone'    => 'UTC',
        'view_timezone'     => 'Pacific/Auckland',
    ));
Run Code Online (Sandbox Code Playgroud)

timezone utc symfony

4
推荐指数
1
解决办法
3256
查看次数

标签 统计

symfony ×2

php ×1

timezone ×1

utc ×1