我想从控制器传递字符串到视图 . 所以我在Controller页面的If-Else子句中写了这样的$ data ['emailstr]和['emailfail']
$this->load->library('email', array('mailtype'=>'html'));//default mailtype is 'text'
$this->email->from('supanat_thana@hotmail.com', "Webmaster");
$this->email->to($this->input->post('email'));
$this->email->subject("Confirm your account");
$message = "<p>Thank you for register!</p>";
$message .= "<p><a href='".base_url()."register/activate_user'>Click Here</a> To Activate your Account </p>";
$this->email->message($message);
if($this->email->send())
{
$data['emailstr'] = "email has been sent";
}
else
{
$data['emailfail'] = "could not send the email.";
}
$this->load->view('regislogin/success', $data);
但是在viewpage中,我可以编写成功的字符串电子邮件,但是在$ emailfail字符串上发生了错误:未定义的变量:emailfail
<DOCTYPE! html>
<html>
<head>
<title> Register </title>
<meta charset="utf-8">
</head>
<body>
<?php
echo "<h3>Thank you for your registration</h3>";
echo $emailstr."
";
if($emailfail != null) {echo $emailfail."
";} else{}
echo anchor('home', 'กลับสู่หน้าหลัก');
?>
</body>
</html>
我应该怎么做?
4 回答
这是因为:
如果您的外部条件不成功,则未初始化 . 我认为你的情况会发生这种情况 .
使用
isset()
而不是!=null
. 您可以't run a comparison on a value that doesn'存在,但isset()
确定变量是否为 set 且不是NULL
.http://php.net/manual/en/function.isset.php
而不是像下面发送字符串发送数组并检查
在View中查看emailstatus,如下所示
也许我们应该“为同一个变量分配不同的值”而不是命名两个不同的变量 .
另外,我想以后您可能想要使用会话闪存数据 . 使用flash数据显示信息就像你的例子一样方便 .
在View页面中,可以访问它
关键是它在重定向后在会话中设置消息,但是一旦刷新页面,消息就已经消失了 .
了解更多here