我遇到了一个我似乎无法修复的问题。我正在开发一种类似于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
时,我确实得到了错误,但没有重定向,只有代码的其余部分。
答案 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') != "")
这对我有用。