【发布时间】:2015-04-21 17:54:36
【问题描述】:
我正在尝试对整数使用类型验证规则,但它失败并出现一些警告。
这是我的表格
class BusinessType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('business_number', 'integer', array(
'required' => false,
));
}
}
这是我的验证规则
My\Bundle\Entity\Business:
properties:
business_number:
- Type:
type: integer
所以没有什么奢侈的!
但我收到以下错误
未捕获的 PHP 异常 Symfony\Component\Debug\Exception\ContextErrorException:“警告:NumberFormatter::parse(): Number parsing failed”
我已经找到了解决 here 的方法,但这样做感觉不对。如果没有其他解决方案,我会这样做,但我更愿意避免它。
我知道这是 Symfony 早期版本中的一个已知错误,但它应该被修复。见here。
那么有没有办法可以使用类型验证?如果是这样,我错过了什么?
编辑 1
我正在使用 Symfony 2.6.6
编辑 2
如果我的值以数字开头(如 123dd),即使我自定义了错误消息,我也会收到以下错误消息
此值无效。
但如果我的值以其他东西开头,我就有上述错误。
编辑 3
我需要存储的最长值是 9 位数。所以整数应该可以正常工作。
编辑 4
这里是bug report
【问题讨论】:
-
您是要输入电话号码还是整数?电话号码存储为整数是一件很糟糕的事情。你必须去掉破折号和可能有用的信息(扩展呢?我如何将它表示为整数?)你应该使用带有正则表达式验证的文本表单类型,或者想出一个自定义表单类型,这样你就可以利用 HTML5
tel输入类型。 -
这是一个我需要存储的整数。这不是电话号码。
-
您在提交表单并将
business_number留空时是否收到此错误? -
不,空白或为空时它可以正常工作。
-
应该注意的是,您链接到 Symfony2 存储库的 PR 是针对
numberForm Type,而不是integer,尽管IntegerToLocalizedStringTransformer扩展了NumberToLocalizedStringTransformer。您可以尝试改用number表单类型吗?
标签: forms validation symfony