1

モデル内で Codeigniter Email クラスを使用することは可能ですか?

私は試みてきましたが、メールオブジェクトのロードを拒否しています。一般に、ライブラリをモデルにロードすることは許可されていますか?

コード

class ClubInvitation は DataMapper を拡張します {

    var $table = "club_invitations";
    var $has_one = array("club");

    public function __construct($id){
        parent::__construct($id);
        $this->load->library('email');
    }

    public function inviteEmailToClub($email, $club, $message){ 
        $invite = new ClubInvitation();
        $invite->email = $email;
        $invite->code = random_string('unique', null);
        //$invite->save($club);

        $club->ClubAdmin->limit(1);
        $mainClubAdmin = $club->ClubAdmin->get()->User->get();
        $data['club'] = $club;
        $data['message'] = $message;
        $data['club_leader'] = $mainClubAdmin;
        $data['invite_code'] = $invite->code;

        $email_body = $this->WBLayout->emailTemplate('invited_to_club', $data);
        $this->email->from($mainClubAdmin->User->getAccount()->email, $club->name);
        $this->email->to($email);
        $this->email->subject($club->name.' has invited you to join');
        $this->email->message($email_body);
        $this->email->send();
    }

}

4

1 に答える 1

3

通常、ライブラリはコントローラーにロードされ、モデルからではなく、そこからアクセスされます。モデルからコントローラーにデータの配列を返すだけで、コントローラー自体から電子メール ライブラリを使用できます。それができない場合は、次のことを試してください。

public function __construct($id){
   parent::__construct($id);
}

public function inviteEmailToClub($email, $club, $message){
   $CI =& get_instance();
   $CI->load->library('email');
   .....
   $CI->email->from($mainClubAdmin->User->getAccount()->email, $club->name);
   ....
} 
于 2013-11-07T05:21:36.273 に答える