CakeEmail - Как им пользоваться?

В моем контроллере я использую функцию электронной почты со следующим кодом:

public function email($mail = null){

    $email = new CakeEmail('default');
    $email->config('default');

    $email->from(array('[email protected]' => 'testing'));
    $email->to('$mail');
    $email->subject('Approved');
    $email->send('Approved');

Вверху у меня

App::uses('AppController', 'Controller', 'CakeEmail', 'Network/Email');

Однако я получаю сообщение об ошибке Неустранимая ошибка: класс CakeEmail не найден.

Я не уверен, где я ошибся. Кто-нибудь может помочь?


person user1192304    schedule 12.02.2012    source источник
comment
Проголосовали за отсутствие исследований. Все это было в книге: book .cakephp.org/2.0/en/core-utility-libraries/   -  person luchomolina    schedule 13.02.2012
comment
@luchomolina и вот снова в 6-й раз проголосовали   -  person bicycle    schedule 29.07.2013


Ответы (4)


Вам нужно изменить свой App::uses и разделить два:

App::uses('AppController', 'Controller');
App::uses('CakeEmail', 'Network/Email');
person Chuck Burgess    schedule 12.02.2012
comment
Не могли бы вы объяснить, почему они должны быть разделены? Это работает, но это не имеет смысла. Я хотел бы знать, почему :) - person Loolooii; 17.12.2012
comment
Из-за нового способа ссылки на классы. - person Chuck Burgess; 25.01.2013
comment
неужели разработчики думали, что это так очевидно? в документах нет ссылки.. - person Juan; 12.07.2013
comment
это очень помогает, спасибо :) - person Aditya P Bhatt; 04.09.2013
comment
Ты гений. Минута тишины для cakephp - person Rápli András; 10.07.2014

App::uses() допускает только два аргумента: $className и $location. Вы передали 4 аргумента, поэтому CakeEmail не загружается.

См. http://api20.cakephp.org/class/app#method-Appuses и http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#App::uses для получения дополнительной информации.

person nappo    schedule 12.02.2012

в документации об этом довольно ясно: http://book.cakephp.org/2.0/en/core-utility-libraries/email.html?highlight=cakeemail#CakeEmail

«Прежде всего, вы должны убедиться, что класс загружен»

при втором взгляде: ваш app::uses() неверен. проверьте, как это задокументировано.

person mark    schedule 12.02.2012

Вы можете использовать компонент электронной почты в контроллере

public $components = array('Email'); 

public function email(){
  $this->Email->to = '[email protected]';  
  $this->Email->subject = 'Subject - ';   
  $this->Email->from = '[email protected]';  
  $this->Email->send('message');
}
person Bahdeng    schedule 13.02.2012
comment
Это не рекомендуется; компонент EmailComponent устарел в CakePHP 2. - person Brad Koch; 09.10.2012