Symfony:如何从AbstractType中的parameters.yml获取值

时间:2017-03-01 15:25:21

标签: php forms symfony formbuilder

我试图从我在parameters.yml

中声明的数组中获取值
# parameters.yml
parameters:
    ...
    objects: {object1: 1, object2: 2, object3: 3}

但是一旦我试图获得"对象"从该文件使用此代码

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

我收到以下错误

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

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

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

它会使测试更加有趣'虽然

答案 1 :(得分:1)

您必须在Class中注入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');
    ....