2011-11-29 41 views
0

我遇到了一個問題,我似乎無法修復。我正在研究一種CMS類型的東西。其中一項功能是製作圖像幻燈片。CodeIgniter flashdata

在一個控制器中,我檢查是否存在具有某個ID的幻燈片,如果存在,它應該取數據並使用它,否則,設置錯誤消息(CodeIgniter flashdata)並重定向到主頁。

我用這個代碼如下:

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,一切都按計劃進行。錯誤消息被設置並重定向到'admin/index'。 但是,如果我回來的是真的,那麼事情就會發生。我確實收到了'Slideshow exists'的echo,但我也收到了錯誤消息。

我試過了一切,刪除了cookies。重置所有會話等。

甚至更​​奇怪的是,當我試圖把$showid我用來檢查錯誤信息,突然$showid是'img'。雖然在其他地方是'1'或'2'...

希望有人可以提供幫助。謝謝!

=====編輯=====

我試圖編輯代碼,並簡化它。現在,我有這樣的代碼在我的控制器:

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,不存在,我被重定向到「管理員/指標」後,收到錯誤消息。當我使用存在的$showid時,我確實得到錯誤,但沒有重定向,只是其餘的代碼。

回答

1

我覺得你有你的觀點來讀取你的閃存數據:

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

或在您的控制器:

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

你也可以閱讀這個問題:CodeIgniter "flashdata" doesn't work

0

可以通過以下方式獲取閃存數據:

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