首页 文章

Dispatch Symfony 2出错

提问于
浏览
0

我正在研究Symfony的活动 . 我想在每次新用户注册时发送电子邮件

我创建了这些课程

UserEvent.php
    <?php
    namespace Acme\UserBundle\Event;


    final class UserEvents {

        const NEW_USER='new.user';


    }

newUserEvent.php

<?php

/**
 * EVENT DISPATCHER
 */
namespace Acme\UserBundle\Event;

use Acme\UserBundle\Entity\User;
use Symfony\Component\EventDispatcher\Event;


class NewUserEvent {

    protected $user;

    public function __construct (User $user) {
        $this->user = $user;
    }

    public function getUser () {
        return $this->user;
    }
}

newUserListener.php

<?php

namespace Acme\UserBundle\Event;


class NewUserListener {

    public function sendEmailToUsers(NewUserEvent $event)
    {
        // ... send email to users
    }
}

在我的控制器中

/**
     * @Route("/test",name="test")
     */
    public function testEvento(){

        $em = $this->getEm();

        $dispatcher = new EventDispatcher();

        // attach listener
        $listner = new NewUserListener();
        $dispatcher->addListener(UserEvents::NEW_USER,array($listner,'sendEmailToUsers'));

        $user = $em->getRepository('AcmeUserBundle:User')->findOneBy(array('username' => 'alex')); //mock
        $event = new NewUserEvent($user);

        $dispatcher->dispatch(UserEvents::NEW_USER,$event);



        return new Response('hi');
    }

但是我得到了这个错误

ContextErrorException:Catchable Fatal Error:传递给Symfony \ Component \ EventDispatcher \ EventDispatcher :: dispatch()的参数2必须是Symfony \ Component \ EventDispatcher \ Event的实例

我不明白我的错误

1 回答

  • 1

    Read this.

    • class NewUserEvent 必须扩展 Event class( Symfony\Component\EventDispatcher\Event

    • 访问控制器中的 event_dispatcher 服务 - $this->get('event_dispatcher')

相关问题