CakeEmail功能,问题&问题

时间:2013-05-30 06:50:38

标签: email cakephp

这开始(可能已经)让我发疯!关于如何使用内置的CakePHP CakeEmail,似乎没有很多帮助。

我在这个网站上发现了一些帖子,以及一个有用的视频信息,但有帮助但这个家伙解释的并不是英文版,所以有时很难跟随他。

我有一个带有基本表单的视图文件,它在我的控制器中发送到我的send()函数,但除了错误之外我什么都没得到。

这是我目前的代码:

更新::

我得到的错误是,

     Undefined index: to [APP/Controller/ContactController.php, line 26]

     Error: Call to a member function subject() on a non-object 
     File: /var/www/app/Controller/ContactController.php    
     Line: 27

我只是不明白,我把CakeEmail称为对吗?我已经正确地复制了代码,但这些是我每次提交from时都会遇到的错误。

感谢格伦。

另一次更新::

我已经删除了以前的代码,我已经让它工作了(某种程度上)

//新的Contact.cpt

echo $this->Form->create(array('controller' => 'contact', 'url' => '/contact/send') );
echo $this->Form->input('ContactForm.to');
echo $this->Form->input('ContactForm.subject');
echo $this->Form->input('ContactForm.message', array('type' => 'textarea') );
echo $this->Form->submit('Email Us', array('class' => 'Button'));
echo $this->Form->end();

//新控制器

public function send() {

    if ( !empty($this->request->data) ) {
        $email = new CakeEmail();
        $email->config('default');
        $email->from(array('contact@me.com' => 'ME'))
              ->to('contact@me.com')
              ->subject($this->request->data['ContactForm']['subject']);
        if ( $email->send($this->request->data['ContactForm']['message']) ) {
            $this->Session->setFlash(__('Email Sent...'), 'default', array('class' => 'success') );
        }

    }
    $this->render('/Contact/Contact');

} //End of function send

但是现在我想改变布局,我的表格将是

//这就是我想要的 - >

echo $this->Form->create(array('controller' => 'contact', 'url' => '/contact/send') );
echo $this->Form->input('ContactForm.name');
echo $this->Form->input('ContactForm.email');
echo $this->Form->input('ContactForm.phone');
echo $this->Form->input('ContactForm.subject');
echo $this->Form->input('ContactForm.message', array('type' => 'textarea') );
echo $this->Form->submit('Email Us', array('class' => 'Button'));
echo $this->Form->end();

我需要输入姓名,电子邮件和电话号码但是当我添加到我的控制器中的$ email时,我得到的就是这个错误

  error: Call to undefined method CakeEmail::name() 

//我改变了控制器代码部分

        $email->from(array('contact@me.com' => 'Me'))
              ->to('contact@me.com')
              ->name($this->request->data['ContactForm']['name']) <-That is the line I added!
              ->subject($this->request->data['ContactForm']['subject']);

如果这不是正确的方式,我不是其中的客人,那么如何更改电子邮件布局以包含我想要的项目列表。我已经查看了(很多次)CakeEmail文档,但它不是很清楚,并且没有提供任何有关如何从默认值更改的工作代码。

感谢格伦

1 个答案:

答案 0 :(得分:1)

您的代码中有一些简单的错误。

这是错误的

->to($this->request->data['to'])

debug($this->request->data)查看数组的结构

您有Undefined index: to [APP/Controller/ContactController.php, line 26]错误,但我在代码中看不到任何引用索引的内容。你是在做这件事还是没有粘贴正确的代码。我怀疑它可能与我提到的$this->request->data问题相同。