2013-05-22 21 views
0

我試圖在cakephp中的窗體中發送一封電子郵件,說'郵件已發送'。電子郵件發送成功的收件人,但然後它進入一個空白的屏幕,並沒有顯示的消息,表明該消息已發送。我已檢查控制器中的php標籤之前和之後的空間,似乎並不是problem.IT正常工作在我的本地和顯示的消息,但沒有對server.I將把我的控制器代碼我的網頁在提交表單時重定向到空白屏幕

public function contact() { 

    $email = new CakeEmail(); 
    if ($this->request->is('post')) { 
     $this->Contact->set($this->request->data); 
     if ($this->Contact->save($this->request->data)) { 
      //$this->Project->set($this->data) 
      $name = $this->request->data['Contact']['name']; 
      $mail = $this->request->data['Contact']['email']; 
      $email->from(array($mail => $name)); 
      $email->to('[email protected]'); 
      if (isset($this->request->data['Contact']['contacttime'])) { 
       $ctime = implode(',', $this->request->data['Contact']['contacttime']); 
      } 
      $message = "Phone No : ".$this->request->data['Contact']['phone']."\n\nBest Contact time :".$ctime." \n\nMessage : ".$this->request->data['Contact']['description']; 
      $email->subject('BlackNova Website Contact Form Message'); 
      //$email->send($message); 
      //$success =1; 
      //$email->send($this->request->data['Contact']['phone']); 
      //pr($message); 
      if ($email->send($message)) { 
       $this->Session->setFlash('Mail sent successfully'); 
       $this->redirect(array('controller' => 'BlockContents', 'action' => 'contact')); 
       //pr($success); 
      } 
     } 
    } 
} 

有一個contact.ctp

<div id="formcontainer_left"> 
    <?php echo $this->Form->create('Contact'); ?> 
    <div class="inputbox1"><?php echo $this->Form->input('name');?></div><br> 
    <div class="inputbox2"><?php echo $this->Form->input('email'); ?></div><br> 
    <div class="inputbox3"><?php echo $this->Form->input('phone');?></div><br> 
    </div> 
    <div id="formcontainer_right"> 
    <div id="me"><?php echo $this->Form->input('description');?> 
    </div> 
    <?php echo $this->Form->submit('SUBMIT');?> 

    </div> 

     <div id="formcontainer_xright"> 

    <div class="formcontainer_last"> BEST TIME TO CONTACT* </div> 
    <div id="chkbox"> 
    <?php echo $this->Form->input('contacttime',array('label'=>false,'type'=>'select','class'=>'checkdiv','multiple'=>'checkbox','options'=>array('Before work' =>'Before work','During work'=>'During work','After work'=>'After work'),'escape'=>false)) ;?> 
    </div> 
     </div> 
      <?php echo $this->Form->end(); ?> 
     <div class="contactformbottom"> 
    </div> 

</div> 

<div id="formcontainer2"> 
    <p> <?php echo $this->Session->flash();?></p> 

可能有人請幫我找出爲什麼它只發生在srver而不是本地主機上?

+0

conf上的調試值在localhost和服務器上是一樣的嗎? – Nunser

+0

是的,它被設置爲config:在本地主機和服務器上寫入('debug',2) – Leah

+0

調試> 0的空白屏幕意味着有錯誤(並且cake不會自動重定向)。嘗試將調試設置爲3,看看是否有東西出現在白色屏幕上。否則,將其設置爲0,並且應該繞過空白屏幕。您的BlockContents控制器中的聯繫動作是?如果是這樣,爲什麼在閃光信息後重定向,如果它是相同的屏幕?當你評論重定向時會發生什麼? – Nunser

回答

0

問題是您的BlockContents不是重定向url中的有效控制器。

如果您嘗試使用下劃線版本block_contents,您會發現它可能會起作用。

請看本書中的建議用法。 http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#url-considerations-for-controller-names

+0

因此,我將不得不用block_contents替換整個代碼,我猜..我沒有嘗試過,因爲這將對我的直播網站有很多改動 – Leah

+0

使用搜索和替換。 –

0

正如@DavidYell所說,問題在於重定向控制器。如果你確實需要重定向,他的回答應該可以解決所有問題。我只想指出,如果您只想清除文本框中的值,但仍然保持相同的操作,則不需要重定向。

if ($email->send($message)) { 
    $this->Session->setFlash('Mail sent successfully'); 
    $this->request->data = null; 
} 

應該清除文本框而不需要重定向。

+0

謝謝,它會清除文本框,但不會顯示任何Flash消息 – Leah

+0

在視圖中嘗試此操作'<?php echo $ this-> Session-> flash('flash');?>',並且還請檢查螢火蟲或類似的由此產生的HTML,看看閃光消息應該是的地方實際上是存在,但有一個'display:none'風格或類似的東西(有時發生在我身上)。 – Nunser