我确信这个问题已被提出,但我没有选择,我不知道我做错了什么。
我正在使用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则没有。 我究竟做错了什么?有人可以帮助我吗?