Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CodeIgniter中显示错误消息_Codeigniter_Codeigniter 2 - Fatal编程技术网

如何在CodeIgniter中显示错误消息

如何在CodeIgniter中显示错误消息,codeigniter,codeigniter-2,Codeigniter,Codeigniter 2,在我的控制器中,我输入以下代码来检查购物车是否为空: if (!$this->cart->contents()){ $this->session->set_flashdata('message', 'Your cart is empty!'); } $this->data['message'] = $this->session->flashdata('message'); $this->load->view('templates/

在我的控制器中,我输入以下代码来检查购物车是否为空:

if (!$this->cart->contents()){
    $this->session->set_flashdata('message', 'Your cart is empty!');
}

$this->data['message'] = $this->session->flashdata('message');

$this->load->view('templates/header', $this->data);
$this->load->view('bookings', $this->data);
$this->load->view('templates/footer');
在我的“预订”视图中,我设置此代码以显示消息:

<div id="infoMessage"><?php echo $message;?></div>

但是在第一页加载时,没有显示消息“您的购物车是空的!”。但是,当我按F5键或刷新浏览器时,它将显示

我已经阅读了codeigniter的手册,其中说“codeigniter支持“flashdata”,或者只有在下一个服务器请求时才可用的会话数据,然后会自动清除。”


但是,我不知道在哪里设置此消息,以便在“下一个服务器请求列表”上可用。

无需将数据传递到视图并将其指定为flashdata

它第一次不起作用的原因是flashdata只能用于下一个服务器请求。加载视图不是服务器请求。但是,刷新页面是非常困难的

有几种解决方案:

  • 直接传递数据并加载视图。(不使用闪存数据。)
  • 使用flashdata并重定向到页面
直接传递数据 您可以直接传递它(就我个人而言,我会选择此选项-我不确定在这种情况下您为什么要使用flashdata,我认为如果用户的购物车是空的,您总是希望通知用户…):

控制器:

if (!$this->cart->contents())
{
    $this->data['message'] = 'Your cart is empty!';
}

$this->load->view('templates/header', $this->data);
$this->load->view('bookings', $this->data);
$this->load->view('templates/footer');
<div id="infoMessage"><?php echo $message;?></div>
if (!$this->cart->contents())
{
    $this->session->set_flashdata('message', 'Your cart is empty!');
}

redirect('/your_page');
 <div id="infoMessage"><?php echo $this->session->flashdata('message');?></div>
查看:

if (!$this->cart->contents())
{
    $this->data['message'] = 'Your cart is empty!';
}

$this->load->view('templates/header', $this->data);
$this->load->view('bookings', $this->data);
$this->load->view('templates/footer');
<div id="infoMessage"><?php echo $message;?></div>
if (!$this->cart->contents())
{
    $this->session->set_flashdata('message', 'Your cart is empty!');
}

redirect('/your_page');
 <div id="infoMessage"><?php echo $this->session->flashdata('message');?></div>
查看:

if (!$this->cart->contents())
{
    $this->data['message'] = 'Your cart is empty!';
}

$this->load->view('templates/header', $this->data);
$this->load->view('bookings', $this->data);
$this->load->view('templates/footer');
<div id="infoMessage"><?php echo $message;?></div>
if (!$this->cart->contents())
{
    $this->session->set_flashdata('message', 'Your cart is empty!');
}

redirect('/your_page');
 <div id="infoMessage"><?php echo $this->session->flashdata('message');?></div>

如果你想使用这个方法,你不能简单地加载视图-由于我上面解释的服务器请求问题-你必须使用
redirect('/your_page')重定向用户,以及
$this->load->helper('url')。您还可以使用本机PHP函数发送适当的HTTP头。第一次加载视图不起作用


您可以使用此
$this->session->keep_flashdata('message')
为其他请求保留数据

我还要检查您是否自动加载会话库或将其加载到控制器的构造函数中:
$this->load->library('session')(我相当肯定您会的,但无论如何都值得检查。)

最后,我知道一些在数据库中存储会话数据的人可能会遇到flashdata的问题,因此,如果上述任何一项都没有帮助的话,这可能是值得研究的

顺便说一句,我个人会在回显变量之前进行检查以确保变量已设置