我试图从我在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
有什么建议吗?
答案 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');
....