多个字段和父实体上的Data Transformer

时间:2013-08-23 10:01:07

标签: php symfony doctrine

我一直在搜索,但无法在我的DataTransformer用例中找到具体的文档。当然有the Symfony2 cookbook chapter,但它没有解决我的具体用例。我只能找到关于转换单个字段的信息。

实体

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

顺序

  1. priceTotal(其他字段无关)
  2. 订单行

    1. 金额
    2. priceFactor
    3. pricePerPiece
    4. priceTotal
    5. 用例

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

      1. Order->priceTotal应为所有OrderLine->priceTotal
      2. 的总和
      3. OrderLine->priceTotal应为(amount * priceFactor * pricePerPiece
      4. 由于我不想将此逻辑放在每个Controller函数中,我假设DataTransformer是正确的解(?)。 FormType是否是此类验证的正确级别?

1 个答案:

答案 0 :(得分: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是什么以及如何使用它们。