【问题标题】:Error in Dispatch Symfony 2调度 Symfony 2 中的错误
【发布时间】:2023-03-30 06:27:02
【问题描述】:

我正在研究 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:可捕获的致命错误:参数 2 传递给 Symfony\Component\EventDispatcher\EventDispatcher::dispatch() 必须是 Symfony\Component\EventDispatcher\Event 的一个实例

我不明白我的错误

【问题讨论】:

  • 尝试将class NewUserEvent {更改为class NewUserEvent extends Event {
  • Symfony 的EventDispatcher::dispatch() 需要一个它自己的Event 类的实例。因此,如果你想使用它,你的自定义事件必须在最后扩展它。

标签: symfony


【解决方案1】:

Read this.

  1. class NewUserEvent 必须扩展 Event 类 (Symfony\Component\EventDispatcher\Event)
  2. 访问控制器中的event_dispatcher 服务-$this-&gt;get('event_dispatcher')

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 2015-05-12
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2012-12-23
    • 1970-01-01
    相关资源
    最近更新 更多