十进制字段的Symfony形式验证

十进制字段的Symfony形式验证,symfony,symfony-forms,Symfony,Symfony Forms,我尝试使用带小数的断言验证规则,但失败了,出现了错误 这是我的表格 $builder->add('cinp_number', 'number', array( 'required' => false, )); 这是我的实体 /** * @Assert\Type(type="decimal") * @var decimal */ private $cinp_number; 这是以字符串值作为输入提交表单时出现的错误: Warning: Num

我尝试使用带小数的断言验证规则,但失败了,出现了错误

这是我的表格

    $builder->add('cinp_number', 'number', array(
        'required' => false,
    ));
这是我的实体

 /**
 * @Assert\Type(type="decimal")
 * @var decimal
 */
private $cinp_number;
这是以字符串值作为输入提交表单时出现的错误:

Warning: NumberFormatter::parse(): Number parsing failed
日志消息:

request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: NumberFormatter::parse(): Number parsing failed" at C:\wamp\www\top_service\vendor\symfony\symfony\src\Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer.php line 174 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException(code: 0): Warning: NumberFormatter::parse(): Number parsing failed at C:\\wamp\\www\\top_service\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\NumberToLocalizedStringTransformer.php:174)"} []

Symfony版本:3.2.13

类型约束基于
is_u()
ctype_()
php函数。php定义中没有
decimal
类型

请查看Symfony文档中的或PHP REF中/的列表


在您的情况下,请尝试
numeric

类型
约束基于
ctype
php函数。php定义中没有
decimal
类型

请查看Symfony文档中的或PHP REF中/的列表


在您的情况下,请尝试使用以下验证器检查表单中的某些值是否为十进制值:

范围如果定义了最小/最大值

Regex如果是任何数字,也可以在这里定义允许的格式

是正确的并在自定义方法中手动检查所有内容


要检查表单中的某些值是否为十进制值,可以使用以下验证器:

范围如果定义了最小/最大值

Regex如果是任何数字,也可以在这里定义允许的格式

是正确的并在自定义方法中手动检查所有内容


我尝试使用
numeric
,但在输入中键入字符串iside时总是出现相同的错误
警告:NumberFormatter::parse():数字解析失败
此警告可能发生在验证之前。请附上更详细的警告消息。同时显示您提交表单(值)的方式。我正在使用EasyadminBundle,它处理表单提交我尝试了
numeric
,但在输入中键入字符串时总是出现相同的错误
警告:NumberFormatter::parse():数字解析失败
此警告可能在验证之前出现。请附上更详细的警告消息。同时显示您如何提交表单(值)。我使用EasyadminBundle,它处理表单提交可能重复的感谢但为什么不工作类型断言感谢但为什么不工作类型断言
/**
 * @Assert\Range(min=0, max=100500)
 */
 private $cinp_number;
/**
 * @Assert\Regex("/^\d+(\.\d+)?/")
 */
 private $cinp_number;
/**
 * @Assert\IsTrue()
 */
public function isCinpNumberValid()
{
    return $this->cinp_number == (float) $this->cinp_number;
}