Symfony2和二传手注射

时间:2014-09-19 18:43:26

标签: symfony

我确信这个问题已被提出,但我没有选择,我不知道我做错了什么。

我正在使用Symfony2,我正在创建一个带有Data Transformer的表单构建器。 我正在尝试在Data Transformer中进行setter注入。

我需要setter注入的原因是变换器已经需要一个参数手动传递给构造函数。我希望尽可能保持干净,避免手工传递太多东西。

以下是我的数据转换器的代码:

  // src/MyBundle/Form/DataTransformer/MyTransformer.php
  namespace MyBundle\Form\DataTransformer;

  use Symfony\Component\Form\DataTransformerInterface;
  use Symfony\Component\Form\Exception\TransformationFailedException;

  use MyBundle\Entity\UserRepository;

  class MyTransformer implements DataTransformerInterface
  {

    /**
      * @var EntityManager
      */
      private $entityManager;

      private $user;

      public function setEntityManager(
             \Doctrine\ORM\EntityManager $entityManager
      )
      {
          echo "Debug: Check-in setEntityManager!";
          $this->entityManager = $entityManager;
      }

      public function __construct($user)
      {
          echo "Debug: Check-in __construct!";
          $this->user = $user;
      }
// ....

这是我的config.yml

  mybundle.form.mytransformer:
      class: MyBundle\Form\DataTransformer\MyTransformer
      calls:
          - [setEntityManager, ["@doctrine.orm.entity_manager"]]

正如我从回声中看到的那样,构造函数被调用,而setEntityManager则没有。 我究竟做错了什么?有人可以帮助我吗?

0 个答案:

没有答案