Я пытаюсь заставить функциональность событий cakephp работать в cakephp 3.4, и мне потребовались столетия, чтобы понять это. Буду признателен за всю помощь, которую я могу получить. Я хочу, чтобы электронное письмо с подтверждением было отправлено пользователям после сохранения их информации. В контроллере пользователей >> метод регистрации
public function register()
{
// $this->viewBuilder()->getLayout('logo-only');
$user = $this->Users->newEntity();
if ($this->request->is('post')) {
$user = $this->Users->patchEntity($user, $this->request->getData());
if($this->Users->processRegistration($user)) {
}else {
$this->Flash->error(__('Your account was not created, check highlighted form fields to correct errors'));
}
}
$this->set(compact('user'));
$this->set('_serialize', ['user']);
}
В моей пользовательской таблице
public function initialize()
{
parent::intialize();
$event = new UserListener();
$this->eventManager()->on($event);
}
public function processRegistration ($entity)
{
if ($this->save($entity)) {
$event = new Event('Model.Users.afterRegister', $this, ['user' => $entity]);
$this->eventManager()->dispatch($event);
return true;
}
return false;
}
В моем src/Event/UserListener.php
<?php
namespace App\Event;
use Cake\Log\Log;
use Cake\Event\EventListenerInterface;
use Cake\Mailer\Email;
class UserListener implements EventListenerInterface {
public function implementedEvents () {
return [
'Model.User.afterRegister' => 'afterRegister'
];
}
public function afterRegister ($event, $user)
{
$email = new Email('default');
$email->setFrom(['[email protected]' => 'Example Site'])
->setTo('[email protected]')
->setSubject('New User Registration - ' . $user['username'])
->send('User has registered in your application');
}
}
?>
Надеюсь, я смог понять, что можно предложить помощь. Спасибо за помощь