Я задал этот вопрос в этом , если еще для отображения 2 представлений в одной функции с именем thread, и я попытался исправить это, как мне было предложено, но проблема остается.Надеюсь, что кто-то может мне помочь ... Это имеет как то, что внутри "если", так и то, что имеет внутри "еще"?
У меня есть небольшая проблема с функцией перенаправления, у меня есть функция контроллера с именем "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" отображается.Значение $ result, возвращаемое функцией getdatafrommodel, является правильным.Спасибо за любую помощь.
ОБНОВЛЕНИЕ
это работает:
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();
}
[ ОБНОВЛЕНИЕ ]
Что я вижу после того, как я щелкну ссылку в представлении под названием «папка / подпапка / someview», чтобы вызвать метод контроллера, как я описал выше, страница в «ELSE» перенаправляется.НО в части IF я также включаю функцию «Sendmail» для отправки электронного письма на мою учетную запись.Sendmail РАБОТАЕТ.Это странная вещь, которую я хотел бы понять.Ясно, что если затем выполнятся оба остальных действия.
Что я хотел бы сделать, так это сразу после того, как пользователь щелкнет ссылку, чтобы активировать метод контроллера (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 Спасибо за вашу заботу, и я бы очень хотел услышать ваши комментарии или советы: -)
ВАУ мое сообщениеслишком долго.Я скоро могу сделать филогенетическое дерево!: -DD