在CakePHP 3中的Mailer中的相关数据

时间:2017-05-30 18:37:58

标签: cakephp cakephp-3.4

我正在使用CakePHP 3.4

我有一个contact_messages表格,可以通过网站上的表格保存邮件。

我想在保存新邮件时向用户发送电子邮件。

为此,我创建了像

这样的邮件程序
<?php
namespace App\Mailer;

use Cake\Mailer\Mailer;
use Cake\Event\Event;
use Cake\Datasource\EntityInterface;

class ContactMessageMailer extends Mailer
{
    public function newMessage($message)
    {
        $this
            ->setProfile('no-reply')
            ->setTemplate('new_message')
            ->setLayout('message')
            ->setEmailFormat('html')
            ->setTo($user->email)          // user email
            ->setSubject('Verify Account')
            ->setViewVars(['name' => $user->first_name, 'email' => $user->email, 'message' => $message->body]);
    }

    public function implementedEvents()
    {
        return [
            'Model.afterSave' => 'alertMessage'
        ];
    }

    public function alertMessage(Event $event, EntityInterface $entity, \ArrayObject $options)
    {
        if ($entity->isNew()) {
            $this->send('newMessage', [$entity]);
        }
    }
}

并在ContactMessagesTable.php

中注册活动
$mailer = new UserMailer(); //use App\Mailer\UserMailer;
$this->eventManager()->on($mailer);

ContactMessages belongsTo UsersUsers正在收到发送电子邮件的用户的电子邮件。

如何在Mailer中获取users信息?

1 个答案:

答案 0 :(得分:0)

可能会这样做; 在用户表中;

public function processUser($user) 
{
  if($this->save($user)){
     $event = new Event('Model.afterSave', $this, [$entity = $user])
     $this->eventManager()->dispatch($event);
     return true;
  }else{
      return false;
   }
}

在ContactMessage表中;

public function initialize()
{
parent::intialize();
$mailer = new UserMailer(); //use App\Mailer\UserMailer;
$this->Users->eventManager()->on($mailer); //ContactMessage has to be related to User table
}

希望我能够沟通。