如何显示CodeIgniter的错误信息(How to display error messages

2019-06-27 08:10发布

在我的控制,我把这个代码来检查的购物车是空的:

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键或刷新浏览器就会显示。

我已经阅读笨,说:“笨支持‘flashdata手册’,或会话数据,将只可用于下一个服务器请求,然后被自动清除。”

但是,我不知道在哪里设置这个消息,因此将可在“下一个服务器requrest”。

Answer 1:

没有必要将数据传递给视图并将其指定为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>

使用flashdata

或者,如果你想使用flashdata,则:

控制器:

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'); 和URL助手 $this->load->helper('url'); 。 你也可以使用原生的PHP发送相应的HTTP头header功能。 初次载入时将无法正常工作的看法。


您可以使用此$this->session->keep_flashdata('message'); 保存的数据的附加请求。

我还检查你要么自动加载会议库或在您的控制器的构造函数加载它: $this->load->library('session'); (我相当肯定你会,但它是值得检查反正。)

最后,我知道有些人谁会话数据存储在自己的数据库可以有问题与flashdata,这样可能是值得探讨的,如果没有上述的帮助。

在一个侧面说明,我个人倒有一个检查,以确保一个变量呼应之前设定。



文章来源: How to display error messages in CodeIgniter