我在Symfony 2.7.x中有一个会计应用程序 .
在创建新交易时,交易中的总金额可以分为多个类别,但我需要验证类别金额的总和不大于交易总额 .
ie- Transaction:
收款人:埃克森
金额:100.00美元
Categories:
名称:小吃
金额:45.00美元
名称:汽油
金额:55.00美元
每个类别也是数据库中的单独实体 .
因此,如果用户将Gasoline更改为65.00美元,则表单将无法通过验证 .
我研究了Symfony 2表单验证,但我发现的所有内容似乎都围绕着对象的单个属性而不是跨多个实体的Constraint Annotations .
我假设我需要设置一个验证服务,但我正在努力设置它并让它在适当的表单上触发 .
2 回答
您还可以使用Expression验证约束来节省几行代码 . 它可以像验证一样容易:
阳明:
或者带注释:
其中Transaction对象的getCategorySum()方法将返回类别的金额总和 .
在你的情况下,是的,所有原始
validators
都不起作用 . 你需要写一个custom callback
. 来自symfony文档CallBack:因此,在您的情况下,它将如下: