CodeIgniter flashdata

时间:2011-11-29 15:25:16

标签: codeigniter

我遇到了一个我似乎无法修复的问题。我正在开发一种类似于CMS的东西。其中一项功能是制作图像幻灯片。

在一个控制器中,我检查是否存在具有特定ID的幻灯片,如果存在,则应该获取数据并使用它,否则,设置错误消息(CodeIgniter flashdata)并重定向到主页。 / p>

我用于此的代码如下:

if($this->Mslideshow->slideshowExists($showid) === FALSE){
    echo 'I\'m getting here';
    $this->session->set_flashdata('error',$showid);
    redirect('admin/index','refresh');
}else{
    echo 'Slideshow exists';
}

slideshowExists()函数的代码是:

public function slideshowExists($showid)
{
    $this->db->where('id',$showid)
             ->limit(1);

    $query = $this->db->get('slideshows');

    if($query->num_rows() < 1){
        return FALSE;
    }

    $this->currentquery = $query;

    return TRUE;
}

问题是这个,实际上非常奇怪。如果我得到的结果是FALSE,一切都按计划进行。错误消息已设置,重定向将转至&#39; admin / index&#39;。 但是,如果我得到的回报是正确的,那么就会发生这样的事情。我确实收到了echo幻灯片存在&#39;但我也收到了错误消息。

我已尝试过所有内容,删除了Cookie。重置所有会话等。

甚至更奇怪的是,当我尝试将$showid用于检查错误消息时,突然$showid是&#39}。 img&#39;。虽然其他地方都是&#39; 1&#39;或&#39; 2&#39; ...

希望有人可以提供帮助。谢谢!

===== EDIT =====

我尝试编辑代码并简化它。现在我在我的控制器中有这个代码:

public function slideshow($showid){
$query = $this->db->where('id',$showid)->get('slideshows');
if($query->num_rows() < 1){
    $this->session->set_flashdata('error','Slideshow doesn\'t exist.');
    redirect('admin/index','refresh');
}

$data['page'] = 'slideshow';
$data['title'] = 'Slideshows';
$this->scripts->load_scripts(array());
$this->scripts->load_functions(array());
$this->load->view('admin/dashboard_template.php',$data);
}

如果我使用$showid运行此功能,但该功能不存在,则会在重定向到&#39; admin / index&#39;后收到错误消息。当我使用确实存在的$showid时,我确实得到了错误,但没有重定向,只有代码的其余部分。

3 个答案:

答案 0 :(得分:1)

我认为您必须在视图中阅读您的Flash数据:

$error = $this->session->flashdata('error');
var_dump($error);

或在您的控制器中:

$error = $this->session->flashdata('error');
if(isset($error)) {
     var_dump($error);
}

您也可以阅读此问题:CodeIgniter "flashdata" doesn't work

答案 1 :(得分:1)

您可以按照以下方式获取Flash数据

$error = $this->session->flashdata('error');
if($error)
{
echo $error;
}

答案 2 :(得分:0)

您可以尝试

if($this->session->flashdata('msg') != "")

这对我有用。