【问题标题】:Codeigniter flashdata - am I using it correctly?Codeigniter flashdata - 我是否正确使用它?
【发布时间】:2011-09-12 21:05:09
【问题描述】:

我了解了 flashdata,并决定使用它来显示基于数据库交互的消息。

例如,如果没有行受到影响,我想显示Post id is invalid or does not exist!

在我的模型中

function delete_post($post_id)
    {
        $this->db->where('user_id', $user_id);
        $this->db->where('post_id', $post_id);
        $this->db->delete('posts'); 

        if ($this->db->affected_rows() == 0) 
        {
            $this->session->set_flashdata('result', 'Post id is invalid or does not exist!');
            redirect('/posts/management');
            return FALSE;
        }
        else
        {

            redirect('/posts/management');
            return TRUE;
        }                   
    }

在我看来

if ($this->session->flashdata('result') != ''): 
    echo $this->session->flashdata('result'); 
endif;

这似乎工作正常,但 CI 文档中没有示例如何在 MVC 之间传递 flashdata。我很担心..我这样做对吗?

编辑:我似乎在之前的尝试中留下了 FALSE 和 TRUE。我可能不需要那个。

【问题讨论】:

  • 就个人而言,我将 flashdata 用于系统消息,例如“数据插入”、“失败”等,并将一个包含更多、ahm、“持久”或敏感值的数组传递给视图。跨度>
  • @Jorge,我也是。数据库交互,我的意思是一样的。数组是个好主意。谢谢! :)

标签: php session codeigniter


【解决方案1】:

我只是将它保存在一个数组中并将其传递给视图 :)

 $data['wow_list'] = $this->Wow_model->getWow($uid);

 $this->session->set_flashdata('message', 'Done. You have added new task.'); 

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


 $this->load->view('wow/index', $data);

查看

<?= $flash_message ?>

数据从控制器传递到 通过数组或 对象的第二个参数 查看加载函数。

http://codeigniter.com/user_guide/general/views.html

【讨论】:

  • 为什么要在这种情况下将数据分配给会话呢?这没有意义。
  • 可以直接在视图中完成..我只是告诉了我的方法。
  • 我的意思是,为什么要赋值给flashdata,然后再赋值给flashdata来查看数据呢?为什么不跳过 flashdata 部分?
【解决方案2】:

会话数据可随时在您的应用程序中的任何位置使用。直接从视图文件调用它是正确的,所以它在控制器中设置它。

根本不需要使用$this-&gt;load-&gt;view() 将其作为数据传递 - 这是多余的。在这种情况下,为什么要首先将其分配给 flashdata?

你的做法是正确的。

编辑:我刚刚看到您将它设置在模型而不是控制器中 - 这是值得商榷的。我建议从您的模型调用中返回一个值,并在您的控制器中根据它设置消息。

【讨论】:

  • 谢谢!这就是我需要知道的一切:)
  • 如何将变量从模型发送回控制器?我知道我可以在视图中但我从未在控制器中尝试过。
  • @Cyber​​Junkie:我的意思是从模型中返回真/假、已删除项目的数组等,然后在控制器中检查该值并设置适当的消息。示例:$succces = $this-&gt;model-&gt;delete($id); 其中模型返回 TRUE/FALSE。 if ( ! $success) // set error message else set success message
  • 谢谢!终于有道理了。不知道为什么人们会争论它,在模型中设置闪回对我来说似乎更直接。 (至少在我的情况下)
【解决方案3】:
$myArr = array('value 1', 'value 1');

$this->session->set_flashdata('myArray', $myArr);

在视图中,

print_r($this->session->flashdata('myArray'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2011-09-08
    • 2021-12-18
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多