2013-05-30 33 views
0

這開始(可能已經)讓我發瘋!對於如何使用內置的CakePHP CakeEmail似乎沒有太多幫助。CakeEmail函數,問題和問題

我在這個網站上發現了很多帖子,還有一個you tube vid,這是有幫助的,但是那個解釋的人沒有用英語來形容,所以有時候很難跟隨他。

我有一個視圖文件,裏面有一個基本的窗體,它向我的控制器裏的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吧?我已經複製了代碼,但這些都是我每次提交的錯誤。

謝謝格倫。

另一個更新::

我從以前刪除的代碼,我得到它的工作(在某種程度上)

//新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('[email protected]' => 'ME')) 
       ->to('[email protected]') 
       ->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(); 

我需要的姓名,電子郵件和電話號碼,但是當我在我的控制器,然後添加到$電子郵件我得到的是這種錯誤

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

//控制器代碼段,我改變

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

如果這是不正確的做法,這我的客串不中, ñ如何更改電子郵件佈局以包含我想要的項目列表。我已經查閱了CakeEmail文檔(很多次),但它不是很清楚,只是沒有給出任何如何從默認更改的工作代碼。

感謝格倫

+0

雖然你包含了很多代碼,但是你沒有描述到底是什麼不起作用。您是否還嘗試手動發送電子郵件,使用「固定」字符串而不是表單數據? (以縮小問題的原因) – thaJeztah

+0

我不確定如何設置固定數據而不會出現更多的血腥錯誤,但您的權利我沒有說錯誤是什麼,請參閱更新 –

回答

1

您在代碼中有幾個簡單的錯誤。

這是錯誤的

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

debug($this->request->data)看到陣列

的結構,必須Undefined index: to [APP/Controller/ContactController.php, line 26]作爲一個錯誤,但我沒有看到任何東西在你的代碼引用索引。要麼你正在做這個或沒有粘貼正確的代碼。我懷疑它可能與我提到的$this->request->data問題一樣。