0

Cakephp のフォームからメールを送信する際に、「メールが送信されました」というフラッシュ メッセージを表示しようとしています。電子メールは受信者に正常に送信されますが、空白の画面になり、メッセージが送信されたことを示すフラッシュ メッセージが表示されません。コントローラの PHP タグの前後にスペースがないか確認しましたが、そうではないようです問題になる.ITはローカルホストで正常に動作し、サーバーではなくメッセージを表示します.コントローラーコードを配置します

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('sales@blacknova.com.au');
            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>

ローカルホストではなくサーバーでのみ発生する理由を誰かが見つけてくれませんか?

4

2 に答える 2

0

@DavidYellが言うように、問題はリダイレクトのコントローラーです。そのリダイレクトが必要な場合は、彼の答えがすべてを解決するはずです。テキストボックスの値をクリアするだけで同じアクションを維持するだけであれば、リダイレクトは実際には必要ないことを指摘したいだけです。

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

リダイレクトを必要とせずにテキストボックスをクリアする必要があります。

于 2013-05-23T13:59:04.433 に答える
0

問題はBlockContents、リダイレクト URL の有効なコントローラーではないことです。

代わりにアンダースコア付きのバージョンを使用してみると、block_contentsおそらくうまくいくでしょう。

本のおすすめの使い方を参考にしてみてください。http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#url-considerations-for-controller-names

于 2013-05-23T11:33:49.143 に答える