0

メッセージモデルの afterSave 内で作業しています。メッセージが作成されるたびにメールを送信して、受信者に新しいメッセージを通知したいと考えています。メールを送信するメッセージ コントローラー内にアクションがあり、afterSave から呼び出したいと思います。

私はこのようにそれを呼び出してみました:

function afterSave($created){
    if($created){
        $this->msgToEmail($this->data);
    }
}

コントローラーではなくモデル内の関数を検索するため、SQL エラーが発生します。

モデル関数を宣言するにはどうすればよいですか? 出来ますか?

4

2 に答える 2

4

他のモデル内でモデル メソッドを使用します。決してコントローラーではありません。

したがって、コードをモデル メソッドにします。その後、簡単に使用できます。

1.3では、今のところモデルメソッドでコンポーネントをハックできます。最終的に 2.x にアップグレードできるまで。

App::import('Component', 'Email');
$this->Controller = new Controller();
$this->Email = new EmailComponent(null);
$this->Email->initialize($this->Controller);
// from/to/subject/...
$this->Controller->set('text', $this->data['Model']['content']);
return $this->Email->send();
于 2013-01-15T17:44:52.683 に答える
1

モデル メソッドを宣言するには、(コントローラーの代わりに) モデルに配置します。

モデルファイルで:

public function msgToEmail($data) {
    // code to send your email...
}

CakeEmailまた、モデル ファイルの先頭にインポートすることを忘れないでください。

App::uses('CakeEmail', 'Network/Email');
于 2013-01-15T17:20:14.433 に答える