的EventSubscriber中注入實體管理器這是我第一次使用表單的EventListener,所以我在如何注入EntityManager中苦苦掙扎。Symfony - 在表單
我有這個formType稱爲UserType
在這個類我有一個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 }
我得到的錯誤是如下
Catchable Fatal Error: Argument 1 passed to AppBundle\Form\EventListener\AddDepartmentDegreeCourseFieldSubscriber::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /Users/shairyar/Sites/oxford-portal/src/AppBundle/Form/UserType.php on line 21 and defined
我知道錯誤的意思,但我認爲我在services.yml
註冊的服務應該注入EntityManager
,爲什麼我得到這個錯誤?我在這裏錯過了什麼?任何幫助將非常感激。
如何創建窗體對象?你必須使用容器來獲取formType。 – codeneuss
@ v.eigler形式在控制器中創建'$ profileForm = $ this-> createForm(UserType :: class,$ userInfo);'如果我理解你的問題的權利。 – Baig
重複:http://stackoverflow.com/questions/24876767/inject-symfony-entitymanager-into-form-type-via-services – codeneuss