2017-03-01 65 views
1

我试图获取值形成我在parameters.yml的Symfony:如何获得在AbstractType

# parameters.yml 
parameters: 
    ... 
    objects: {object1: 1, object2: 2, object3: 3} 

声明数组但从parameters.yml值一次我尝试从“物”该文件使用此代码

$builder->add('list', ChoiceType::class, array ('objects' => $this->container->getParameter('categories'))); 

我收到以下错误

Notice: Undefined property: Project\Bundle\Form\EntityType::$container 

有什么建议?

回答

1

如果您声明Project\Bundle\Form\EntityTypea service,您将能够将数据以及其所需的任何其他服务注入到该数据中。当您将其包含在内时,您仍然可以将该类型称为EntityType::class,因为Symfony会认识到该类被定义为服务。

它会使测试多一点“有趣”虽然

1

你必须注入你的类里面的ContainerInterface。

services.yml

form.my_entity_type: 
    class: AppBundle\Form\MyEntityType 
    arguments: 
    - '@service_container' 
    tags: 
    - { name: form.type } 

MyEntityType

/** @var ContainerInterface */ 
protected $container; 

/** 
* @param ContainerInterface $container 
*/ 
public function __construct(ContainerInterface $container) 
{ 
    $this->container = $container; 
} 

** 
* @param FormBuilderInterface $builder 
* @param array    $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $params = $this->container->getParameter('my-params'); 
    .... 
+0

我想补充的是,你必须包含(使用):使用的Symfony \分量\ DependencyInjection \ ContainerInterface; – MilanG