2011-10-04 51 views

回答

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

从MyType扩展的表单类将如何?我无法让他们工作。我得到:“传递给Makrosoft \ UtilesBundle \ Utiles \ MyType :: __ construct()的参数1必须是Symfony \ Component \ DependencyInjection \ ContainerInterface的一个实例,没有给出...” –

1

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

+0

存储库是在Type的构建表格中构建的,而且这个函数是一个静态调用,所以我不能这样做。 –