0

这开始(可能已经)让我发疯了!关于如何使用内置的 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 时都会遇到的错误。

谢谢格伦。

另一个更新::

我已经删除了之前的代码,我已经让它工作了(有点)

//新建联系人.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 文档,但它不是很清楚,只是没有给出如何从默认值更改的任何工作代码。

谢谢格伦

4

1 回答 1

1

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

这是错误的

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

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

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

于 2013-05-30T07:14:00.537 回答