Laut documentation sollte ich inplatedEvents direkt zu meinem Mailer hinzufügen können, um alle meine Mailing-Logik von meinen Codes zu trennen.CakePHP 3 installedEvents() feuert nicht im E-Mail-Programm
Allerdings, wenn ich die genauen Beispiele in der Dokumentation folgen; Ich sehe, dass meine implementierte Ereignisfunktion nicht funktioniert. (keine E-Mails senden & protokolliert nichts)
Sollte ich meine E-Mail-Klasse irgendwo implementieren? Wenn ja, wie sollte ich meine E-Mail-Klasse registrieren?
Das ist mein Mailer Klasse:
<?php
namespace App\Mailer;
use Cake\Mailer\Mailer;
use Cake\Log\Log;
/**
* Purchase mailer.
*/
class PurchaseMailer extends Mailer
{
/**
* Mailer's name.
*
* @var string
*/
static public $name = 'Purchase';
public function implementedEvents()
{
return [
'Model.afterSave' => 'onStatusChange'
];
}
public function onStatusChange(Event $event, EntityInterface $entity, ArrayObject $options)
{
Log::write(
'info',
'd1'
);
//if ($entity->isNew()) {
$this->send('sendStatusChangeMails', [$entity]);
//}
}
/**
* @param EntityInterface $entity
* @return [type]
*/
public function sendStatusChangeMails($entity)
{
Log::write(
'info',
'd2'
);
//if($entity->status_id == 1) {
//@todo email???
$this
->template('purchase')
->layout('default')
->emailFormat('html')
->from(['[email protected]' => 'TEST'])
->to('[email protected]')
->subject('test')
->set(['content' => 'this is a purhcase testing mail.']);
//}
}
}
Sie benötigen mehr Kontext hinzufügen, Ihr Mailer-Code ist nicht genug, um das Problem zu reproduzieren. Besonders wichtig ist der Code, unter dem Sie Ihren Mailer/Listener registrieren. – ndm
Nun, das ist die Frage. Wie soll ich das machen? Dokumentation sagt nur, dass, um Mail-Logik von anderen Codes zu trennen, dies und nichts anderes tun. Wie sollte ich meinen Mailer registrieren? –
An diesem Punkt scheinen die Dokumente zu erwarten, dass Sie bereits gelesen haben über ** [wie das Ereignissystem funktioniert] (http://book.cakephp.org/3.0/en/core-libraries/events.html#registering -Listener) ** Ein Link zum Event-Bereich könnte hilfreich sein, du könntest vorschlagen ** [über GitHub] (https://github.com/cakephp/docs/issues) **. – ndm