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



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

我的实体数据.php如下所示:

/**
* @var decimal
* @AssertExpression(
*     "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;

在表单数据类型.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

该范围功能良好,当超出范围时会出错。问题是,当输入十进制数字时,它也会出错。

知道吗?

我试过了:

@AssertExpression(
    *     "this.getFu5Weight() in 8.00..39.00 or this.getFu5Weight() == 99" 

显然,它没有奏效。提供的Symfony的最小值和最大值不允许在范围之外有额外的数字。我会很高兴有一个没有正则表达式的简单解决方案。

感谢您的支持!

in 8..39创建这个数组:[8,9,10,...,39]并检查你的值是否在这个数组中。显然,您无法创建所有浮点值介于 8 和 39 之间的数组。

试试这个:

/**
* @var decimal
* @AssertExpression(
*     "(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"
* )
*/

最新更新