0

我正在尝试Emailing System(CakeEmail Class)在我的 CakePHP 应用程序中使用。当一个新用户在我的网站上注册时,它会向他/她发送一封电子邮件,说“您已保存,现在点击此链接登录”。我添加了这个功能,但它没有发送任何邮件或告诉我代码有什么问题。这是代码:p

App::uses('AppController','Controller','CakeEmail','Network/Email');p
.
.
.
public function signUp(){
    if($this->request->is('post')){
       $this->User->create();
       if($this->User->save($this->request->data)){
          $Email=new CakeEmail('default');
          $Email->from(array('admin_beauty_class@email.com'=>'My Site'))
                ->to($this->request->data['User']['username'])
                ->subject('Welcome to Beauty Class')
                ->send('My message');
          $this->Session->setFlash(__('You have been saved and an email has just been sent to you, check your mail-box and follow the given link to login'));
          $this->redirect();
       }else{
          $this->Session->setFlash(__('The user could not be saved. Please, try again.'));
       }
    }
    $this->set('title_for_layout','Sign Up');
}
4

1 回答 1

1

改变

App::uses('AppController','Controller','CakeEmail','Network/Email');p
.
.
.
public function signUp(){ # ... the rest of your code

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

public function signUp(){ # ... the rest of your code

来源

静态 App::uses(string $class, string $package)

类在 CakePHP 中是延迟加载的,但是在自动加载器可以找到您的类之前,您需要告诉 App,它可以在哪里找到文件。通过告诉 App 可以在哪个包中找到一个类,它可以在第一次使用一个类时正确定位文件并加载它。

一些例子:

App::uses('PostsController', 'Controller');
App::uses('AuthComponent', 'Controller/Component');
App::uses('MyModel', 'Model');

所以基本上第二个参数应该简单地匹配核心或应用程序中类文件的文件夹路径。


附言。给马克一些学分。我没有注意到评论中已经给出了答案。

于 2013-06-21T19:07:46.150 回答