4

我已经搜索了一段时间,但无法找到关于我DataTransformer的用例的特定文档。当然有Symfony2 食谱章节,但它不能解决我的具体用例。我只能找到有关转换单个字段的信息。

实体

我有两个实体(有 0..n 关系)

命令

  1. priceTotal(其他字段不相关)

订单行

  1. 数量
  2. 价格因素
  3. 单价
  4. 总价

用例

我不想Order->priceTotal每次都在视图中即时计算。这就是为什么我想创建一个OrderLine在提交时重新计算几个值的转换器:

  1. Order->priceTotal应该是所有的总和OrderLine->priceTotal
  2. OrderLine->priceTotal应该是( amount* priceFactor* pricePerPiece)

由于我不想把这个逻辑放在每个Controller函数中,我认为这DataTransformer是正确的解决方案(?)。FormType 是否是此类验证的正确级别?

4

1 回答 1

3

我不认为 DataTransformer 是您正在寻找的。DataTransformer 可以改变表单中一个字段的提交内容,但无权访问它周围的任何字段。这可能是您想要使用 LifeCycleCallbacks 做的事情。

http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-haslifecyclecallbacks

以下是如何使用 LifeCycleCallbacks 的示例:

http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html

它并不反映你想做什么,但它会教你什么是 LifeCycleCallbacks 以及如何使用它们。

于 2013-08-23T10:04:23.767 回答