Symfony2:访问存储库中的容器

Jul*_*cro 3 symfony

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

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

任何的想法?

Reu*_*ven 12

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

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

class MyType extends FormType
{
    private $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }
}
Run Code Online (Sandbox Code Playgroud)

在config.yml中,定义新类型

mytype:
  class: ...\MyType
  arguments: ["@service_container"]
  tags:
      - { name: form.type }
Run Code Online (Sandbox Code Playgroud)

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