[英]Symfony - Inject Entity Manager in EventSubscriber of form
這是我第一次使用表單的EventListener,所以我正在努力學習如何在其中注入EntityManager。
我有這個名為UserType
formType,在這個類中我有一個EventSubscriber AddDepartmentDegreeCourseFieldSubscriber
需要訪問EntityManager
class UserType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventSubscriber(new AddProfileFieldSubscriber());
$builder->addEventSubscriber(new AddDepartmentDegreeCourseFieldSubscriber());
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User'
));
}
}
這是我的services.yml
app.department_course_degree_subscriber:
class: AppBundle\Form\EventListener\AddDepartmentDegreeCourseFieldSubscriber
arguments: ["@doctrine.orm.entity_manager"]
tags:
- { name: kernel.event_subscriber }
我得到的錯誤如下
可捕獲致命錯誤:傳遞給AppBundle \\ Form \\ EventListener \\ AddDepartmentDegreeCourseFieldSubscriber :: __ construct()的參數1必須是Doctrine \\ ORM \\ EntityManager的實例,沒有給出,在/ Users / shairyar / Sites / oxford-portal / src / AppBundle中調用/Form/UserType.php在第21行並定義
我知道錯誤意味着什么,但我認為我在services.yml
注冊的services.yml
應該注入EntityManager
,為什么我收到此錯誤? 我在這里失蹤了什么? 任何幫助將非常感激。
這是因為,在構建表單時傳遞AddDepartmentDegreeCourseFieldSubscriber
新實例。 您需要從服務容器傳遞實例。
use AppBundle\Form\EventListener\AddDepartmentDegreeCourseFieldSubscriber;
class UserType extends AbstractType
{
private $addDepartmentDegreeCourseFieldSubscriber;
public function __construct(AddDepartmentDegreeCourseFieldSubscriber $subscriber)
{
$this->addDepartmentDegreeCourseFieldSubscriber = $subscriber;
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventSubscriber($this->addDepartmentDegreeCourseFieldSubscriber);
}
}
# app/config/services.yml
services:
app.department_course_degree_subscriber:
class: AppBundle\Form\EventListener\AddDepartmentDegreeCourseFieldSubscriber
arguments: ["@doctrine.orm.entity_manager"]
tags:
- { name: kernel.event_subscriber }
app.form.type.my_user_form:
class: AppBundle\Form\UserType
arguments: [ "@app.department_course_degree_subscriber" ]
tags:
- { name: form.type }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.