我正在尝试在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而不是本地主机上?
答案 0 :(得分:0)
问题是您的BlockContents
不是重定向网址中的有效控制器。
如果您尝试使用下划线版本block_contents
,您会发现它可能会有效。
答案 1 :(得分:0)
正如@DavidYell所说,问题是重定向中的控制器。如果你确实需要重定向,他的答案应该解决所有问题。我只是想指出你真的不需要重定向,如果你想要的只是清除文本框中的值,但保持相同的动作。
if ($email->send($message)) {
$this->Session->setFlash('Mail sent successfully');
$this->request->data = null;
}
应该清除文本框而不需要重定向。