我的网页在提交表单时重定向到空白屏幕

时间:2013-05-22 07:13:44

标签: cakephp cakephp-2.0

我正在尝试在cakephp中从表单发送电子邮件时显示一条说“发送邮件”的Flash消息。电子邮件成功发送给收件人,但然后它进入一个空白屏幕,并没有显示闪烁消息,表明该消息已被发送。我已检查控制器中的php标签之前和之后的空格,似乎没有成为问题.IT在我的localhost上工作正常并显示消息但不在服务器上。我将把我的控制器代码

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>

有人可以帮助我找出为什么它只发生在srver而不是本地主机上?

2 个答案:

答案 0 :(得分:0)

问题是您的BlockContents不是重定向网址中的有效控制器。

如果您尝试使用下划线版本block_contents,您会发现它可能会有效。

查看本书中的推荐用法。 http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#url-considerations-for-controller-names

答案 1 :(得分:0)

正如@DavidYell所说,问题是重定向中的控制器。如果你确实需要重定向,他的答案应该解决所有问题。我只是想指出你真的不需要重定向,如果你想要的只是清除文本框中的值,但保持相同的动作。

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

应该清除文本框而不需要重定向。