十进制范围加上额外数字的Symfony验证

十进制范围加上额外数字的Symfony验证,symfony,validation,Symfony,Validation,我正在尝试验证8到39或99之间的十进制范围: My entity Data.php如下所示: /** * @var decimal * @Assert\Expression( * "this.getFu5Weight() in 8..39 or this.getFu5Weight() == 99", * message="3. Weight at assessment: this value has to be between 8 and 39, or 99 if unknow

我正在尝试验证8到39或99之间的十进制范围:

My entity Data.php如下所示:

/**
* @var decimal
* @Assert\Expression(
*     "this.getFu5Weight() in 8..39 or this.getFu5Weight() == 99",
*     message="3. Weight at assessment: this value has to be between 8 and 39, or 99 if unknown"
* )
*/
private $fu5Weight;
格式为DataType.php:

    ->add('fu5Weight', 'number', array('invalid_message'=>'3. Weight at assessment: this value has to be between 8 and 39, or 99 if unknown'))
在Data.orm.yml中:

fu5Weight:
    type: decimal
    nullable: true
    precision: 18
    scale: 2
    column: FU5_Weight
该范围功能良好,超出范围时会出现错误。问题是当输入十进制数时,它也会变成错误

有什么想法吗

我试过:

@Assert\Expression(
    *     "this.getFu5Weight() in 8.00..39.00 or this.getFu5Weight() == 99" 
显然,它没有起作用。 提供的Symfony最小值和最大值似乎不允许有超出范围的额外数字。我会很高兴有一个没有正则表达式的简单解决方案

谢谢你的支持

在8..39中创建此数组:[8,9,10,…,39]并检查您的值是否在此数组中。显然,不能创建所有浮点值都在8到39之间的数组

请尝试以下方法:

/**
* @var decimal
* @Assert\Expression(
*     "(this.getFu5Weight() >= 8 and this.getFu5Weight() <= 39) or this.getFu5Weight() == 99",
*     message="3. Weight at assessment: this value has to be between 8 and 39, or 99 if unknown"
* )
*/