【问题标题】:associated data in Mailer in CakePHP 3CakePHP 3 Mailer 中的关联数据
【发布时间】:2017-05-30 18:37:58
【问题描述】:

我正在开发 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 信息?

【问题讨论】:

    标签: cakephp cakephp-3.4


    【解决方案1】:

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

    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
    }
    

    希望我能够交流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多