2

doctrine をサービスに使用する際に問題があります:

致命的なエラー: 37 行目の /var/www/Symfony/src/mio/mioBundle/AuthenticationHandler.php の非オブジェクトに対するメンバー関数 persist() の呼び出し

サービスのコード:

services:
    authentication_handler:
        class: mio\mioBundle\AuthenticationHandler
        arguments: [@router , @doctrine.orm.entity_manager ]
        calls:
            - [ setContainer, [ @service_container ] ]

リスナーのコードは次のとおりです。

class AuthenticationHandler extends ContainerAware implements AuthenticationSuccessHandlerInterface{

    protected $router;

    protected $em;

        public function __construct(RouterInterface $router)
    {
        $this->router = $router;
    }


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

    public function onAuthenticationSuccess(Request $request, TokenInterface $token)
    {
        $empleado = $token->getUser();
        $empleado->setNombre("abeeeer");
        $this->em->persist($empleado); //line 37
        $this->em->flush();

        //return new Response($token->getUsername());
        return new RedirectResponse($this->router->generate('familia'));
    }
}
4

1 に答える 1

2

コンストラクターには複数のパラメーターを含めることができます。

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

ただし、クラスに複数のコンストラクター__constructorを含めることはできず、コンストラクター メソッド名ではないため、そのメソッドを削除する必要があります。

ContainerAwareまた、とにかく必要なサービスを注入しているため、拡張する必要はありません。それはあなたがこれを必要としないことを意味します:

calls:
    - [ setContainer, [ @service_container ] ]
于 2012-10-04T14:51:03.633 に答える