我正在尝试验证 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"
* )
*/