私はジャスティンと一緒です。
ユーザー、管理者、および自動化されたプロセスのシェルスクリプトから発生する可能性のある特定のアクションに基づいて電子メールをトリガーする一連のモデルがあります。
複数の場所で電子メールを書き直すよりも、モデルで電子メールの応答を一元化する方がはるかに簡単です (注文レコードが「キャンセル」された場合など)。
また、ビジネス ルールである他の hasOne、belongsTo、または hasMany モデルにカスケードするいくつかのコア 'ロジック' を処理するモデルのプロセスを自動化しました。
たとえば、crontab シェル スクリプトは、Offer->expire() を呼び出してオファーを「失効」させ、それから Offer->make() を呼び出して別のオファーを作成しますが、それができない場合は、Request->expire() を呼び出してオファーを作成します。元のリクエストを「期限切れ」にします。電子メールは、有効期限が切れた最初のオファー受信者、新しいオファー受信者、および/または有効期限が切れた場合はリクエスタに送信する必要があります。これらは、crontab シェル、ユーザー、またはリクエストとオファーを手動で管理できる管理者によって呼び出すことができます。すべて異なるコントローラーまたはインターフェースを使用しています。
これは私がやったことであり、モデルとコントローラー内で呼び出すことができます:
if(empty($this->MailsController)) {
App::import('Controller','Mails');
$this->MailsController = new MailsController();
$this->MailsController->constructClasses();
$this->MailsController->Email->startup($this->MailsController);
}
これで、ほぼどこからでもこれを呼び出すことができ、モデル内で呼び出される以下を介して、どのデータを見つけるか、どの電子メールを生成するか、誰に送信するかなどのすべてのロジックを一元化できます。
$this->MailsController->orderMail($user_id,$this->id,$mode);
すべての電子メール ロジックは、基本的にモデルによって MailsController を介して間接的に呼び出されるため、rscherer のコードを試してみます。
これが役に立てば幸いです、oh4real