0
Я изучаю мероприятие на Symfony. Я хочу отправить по электронной почте каждый раз, когда новый пользователь регистрируетсяОшибка при отправке Symfony 2
Я создал этот класс
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: Argument 2 passed to Symfony\Component\EventDispatcher\EventDispatcher::dispatch() must be an instance of Symfony\Component\EventDispatcher\Event
Я не понимаю свою ошибку
Попробуйте изменить класс 'NewUserEvent {' в 'класс NewUserEvent проходит событие {' – sjagr
Symfony в [** EventDispatcher :: отправка() **] (https://github.com /symfony/EventDispatcher/blob/v2.6.1/EventDispatcherInterface.php#L38) требуется экземпляр собственного [** Event **] (https://github.com/symfony/EventDispatcher/blob/v2.6.1/Event .php). Поэтому, если вы хотите использовать его, ваше пользовательское событие должно продлить это последнее. – Touki