CodeIgniter - 如何设置数组flashdata并调用消息?

时间:2017-12-10 10:52:25

标签: php codeigniter

我有一个使用foreach的CodeIgniter网络应用程序,用于user插入数据,如果提交的数据已成功插入,我创建了一个名为sc_msg[]的flashdata消息。但我不知道如何在flashdata上调用它。

$user = $this->input->post('user', TRUE);
foreach ($user as $u)
{
   $this->model->insert($u);
   $sc_msg[] = '- User '.$u.'has been successfully registered<br>';
}

这是我在视图中调用它的代码。

<?php if ($this->session->flashdata('warning'))
        echo $this->session->flashdata('message'); ?>

我想要这样的消息:

  
      
  • 用户abc已成功注册
  •   
  • 用户bca已成功注册
  •   
  • 用户qwe已成功注册
  •   
  • 用户ewq已成功注册
  •   

所有sc_msg[]都存储在message上,因此我无需在视图中使用FORFOREACH来调用它。

问题出在我的控制器上,我正在尝试设置消息:

$this->session->set_flashdata('message', $sc_msg);

这只是打印数组,所以我尝试将$sc_msg更改为$sc_msg[],结果是错误:无法使用[]进行阅读。

我也试图在foreach内使用set_flashdata并且失败了。出乎意料的预言。

然后我试图像这样设置flashdata:

 $this->session->set_flashdata('message', $sc_msg[0].$sc_msg[1]);

这会打印结果,但只打印索引0和索引1。结果:

  
      
  • 用户abc已成功注册
  •   
  • 用户bca已成功注册
  •   

还有另外两条消息没有为用户qweewq调用。

我不知道如何在flashdata内调用该消息。但是,请不要给我 for loop 解决方案。谢谢。

1 个答案:

答案 0 :(得分:1)

我看到了一种简单的方法来做锌。

sc_msg[]上的邮件已用<br>表示下一行。好的,所以你需要做的就是不要在flashdata中使用foreach。但是使用foreach来附加消息中的字符串。

foreach ($sc_msg as $sm)
{
    $msg = $msg.$sm; // OR using $msg .= $sm;
}

$this->session->set_flashdata('message', $msg);

你可以尝试一下,如果你有另一种方法来附加字符串它是好的。我给你一个简单的例子。