我在这个if then else to display 2 views on one function called帖子中提出了这个问题,我试图按照我的建议修复它,但问题仍然存在。希望有人可以帮助我...它既有“if”内部的内容,也包含“else”中的内容?
我的重定向功能有点问题, 我有一个名为“someview”的控制器函数,我还创建了一个同名的视图文件(someview.ctp) 控制器功能将执行一些操作(从模型中查询数据)。 它可以简单地描述如下
function someview()
{
$result=$this->User->getdatafrommodel();
if(!empty($result))
{
//do something
sendmail(.....);
}
else
{
$this->redirect(array('action'=>'usernotexist'));
}
}
function usernotexist()
{
$this->loadSkin();
}
我还创建了一个名为“usernotexist.ctp”的页面,我想显示一些关于数据库系统中不存在指定用户的信息。但是,我之前的函数(someview)总是在调用之后执行“if”和“else”。如果我消除了该函数中的“else”部分,那么它对我来说正常工作;显示名为“someview.ctp”的页面。从getdatafrommodel函数返回的$ result值是正确的。 感谢您的任何帮助。
更新
这有效:
function someview()
{
$result=$this->User->getdatafrommodel();
print_r($result);
exit();
if(!empty($result))
{
//do something
}
else
{
$this->redirect(array('action'=>'usernotexist'));
}
}
function usernotexist()
{
$this->loadSkin();
}
这会打印一个空数组。
function someview()
{
$result=$this->User->getdatafrommodel();
print_r($result);
if(!empty($result))
{
//do something
}
else
{
$this->redirect(array('action'=>'usernotexist'));
}
}
function usernotexist()
{
$this->loadSkin();
}
[更新
在单击名为“folder / subfolder / someview”的视图中的链接以调用上述控制器方法后,我看到“ELSE”中的页面被重定向。但在IF部分我还包括一个“Sendmail”功能,用于向我的帐户发送电子邮件。 sendmail工作。这是我想要理解的奇怪的事情。显然,如果那么Else都被执行了。
我想要做的是在用户点击链接以激活控制器方法(someview)之后,如果查询返回空记录,我将被定向到页面“usernotexist”或者我将发送给他否则发邮件。
为了您的关注,我同意发布原始源代码,我认为sendmail函数可能会在某个地方犯错误,我目前无法识别它的位置。
这是
function newpassword()
{
$this->loadSkinForAction();
$result=$this->EwtUser->get_user_from_email($_POST['email']);
if(!empty($result))
{
$userid = $result[0]['ewt_users']['id'];
$password=$this->EwtUser->get_and_change_user_password($_POST['email']);
$mail="Your new password is: ".$password."<br/>Please use it for next login.<br/>You are recommended to change this password again in your 'Personal Profile' section.";
$this->sendmail($userid,$mail,$_POST['email']);
}
else
{
//print_r($result);
$this->redirect(array('action'=>'userexists'));
}
}
function userexists()
{
$this->loadSkinForAction();
}
和查询数据的模型函数
function get_and_change_user_password($email)
{
$password=$this->genRandStr();
$sql=sprintf("UPDATE ewt_users SET password='%s' WHERE email='%s'",md5($password),$email);
$this->query($sql);
return $password;
}
这是sendmail函数,
function sendmail($userid, $reportcontent,$email){
//if($this->Session->read($this->_userName))
{
$this->loadModel('EwtMailtemplate');
$this->loadModel('EwtUser');
$this->loadModel('EwtSetting');
$this->autoRender = false;
$date = date("Y-m-d");
$userinfo = $this->EwtUser->read(null, $userid);
$fullname = $userinfo['EwtUser']['fullname'];
$lastname = $userinfo['EwtUser']['lastname'];
$mailtempl = $userinfo['EwtUser']['mailtempl'];
if ($mailtempl == 0) {
$mailtempl = 1;
}
$setting = $this->EwtSetting->find('first');
$mailhost = $setting['EwtSetting']['mailhost'];
$mailuser = $setting['EwtSetting']['mailuser'];
$mailpass = $setting['EwtSetting']['mailpass'];
//$reportmail = $setting['EwtSetting']['reportmail'];
$reportmail=$email;
$bodymail = $this->EwtMailtemplate->read(null, $mailtempl);
//$header = $bodymail['EwtMailtemplate']['header'];
//$footer = $bodymail['EwtMailtemplate']['footer'];
//$title = $bodymail['EwtMailtemplate']['title'];
$subject="New login password for working time system";
//$subject = $lastname . " " . str_replace("[date]", $date, $title);
//$header = str_replace("[lastname]", $lastname, $header);
//$header = str_replace("[date]", $date, $header);
//$footer = str_replace("[lastname]", $lastname, $footer);
//$content = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><html><head><meta http-equiv="Content-Type" content="text/html; charset =utf-8" /></head><body>'.$header ."<br />" . $reportcontent . "<br />" . $footer . '</body></html>';
$content = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><html><head><meta http-equiv="Content-Type" content="text/html; charset =utf-8" /></head><body>'."<br />".$reportcontent."<br />".'</body></html>';
$this->Email->to = $reportmail;
$this->Email->charset = 'UTF-8';
$this->Email->from = sprintf("%s <%s>", $fullname, $mailuser);
$this->Email->replyto = sprintf("%s <%s>", $fullname, $mailuser);
$this->Email->subject = $subject;
$this->Email->sendAs ='html';
$smtp = array(
'port'=>25,
'host'=>$mailhost,
'timeout'=>99,
'username'=>$mailuser,
'password'=>$mailpass
);
$this->Email->smtpOptions = $smtp;
$this->Email->delivery = 'smtp';
if ($this->Email->send($content)) {
$this->redirect('newpassword');
} else {
$this->redirect('userexists');
}
$smtp_error = $this->Email->smtpError;
if (strlen($smtp_error)>0){
$this->Session->setflash($smtp_errors);
}
}
}
同样,它执行IF和ELSE分支 感谢您的关注,我真的很想听到您的任何意见或建议: - )
哇我的帖子太长了。我很快就可以做一个系统发育树了! :-D-d
答案 0 :(得分:3)
您正在重定向sendmail
功能!
if ($this->Email->send($content)) {
$this->redirect('newpassword');
} else {
$this->redirect('userexists');
}