Symfony2:访问存储库中的容器

时间:2011-10-04 04:41:58

标签: symfony

我正在尝试在表单中显示面向用户的选项列表,但我无法访问容器以获取当前用户。

我不知道如何在存储库中获取它而不是在类型中。

任何想法?

2 个答案:

答案 0 :(得分:12)

假设你创建了一个FormType类。您不知道如何在此对象中传递容器。

现在创建从FormType扩展的自己的类型,并通过构造函数

传递容器
class MyType extends FormType
{
    private $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }
}

在config.yml中,定义新类型

mytype:
  class: ...\MyType
  arguments: ["@service_container"]
  tags:
      - { name: form.type }

现在,在所有控制器中使用MyType而不是FormType

答案 1 :(得分:1)

也许您可以在控制器中请求User对象,并将其传递给构造函数中的存储库?