如何在symfony2 AbstractType中使用Doctrine

时间:2016-02-19 21:40:23

标签: php symfony doctrine-orm doctrine

我试图在asymfony2表单类型中使用doctrine。

在services.yml中我有:

fyp_user.profile.form.type:
    class: FYP\UserBundle\Form\Type\ProfileFormType
    arguments: 
        - fos_user.model.user.class
        - @doctrine.orm.entity_manager
    tags:
        - { name: form.type, alias: fyp_user_profile }

我的班级看起来像:

use Doctrine\ORM\EntityManager;

class ProfileFormType extends AbstractType
{
    private $em;
    private $session;

    public function __construct(EntityManager $em)
    {
        $this->em = $em; 
    }   

我要做的事情如下:

 $cust =  $this->em->getRepository('MyBundle:Customers')->findOneByEmail($email);

我一直在

Type error: Argument 1 passed to FYP\UserBundle\Form\Type\ProfileFormType::__construct() must be an instance of Doctrine\ORM\EntityManager, string given, called in /Applications/MAMP/htdocs/upgrade/app/cache/dev/appDevDebugProjectContainer.php on line 3594

感谢。

1 个答案:

答案 0 :(得分:2)

服务定义和类构造函数之间存在不匹配。在服务定义中,您有两个参数:fos_user.model.user.class@doctrine.orm.entity_manager,您的构造函数只接受一个(EntityManager)。只需从服务定义中的arguments列表中删除第一个条目,您就会很好