Класс Codeigniter Email внутри модели
Можно ли использовать класс электронной почты Codeigniter внутри модели?
Я пытался, но он отказывается загружать почтовый объект. Можно ли загружать библиотеки в модели?
Код
Класс 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();
}
}
1 ответ
Решение
Обычно библиотеки загружаются в контроллер и доступны оттуда, а не из моделей. Вы можете просто вернуть массив данных из вашей модели в контроллер и использовать библиотеку электронной почты из самого контроллера. Если это неосуществимо для вас, попробуйте:
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);
....
}