簡體   English   中英

CodeIgniter“flashdata”不起作用

[英]CodeIgniter “flashdata” doesn't work

我使用CodeIgniter 2.1.0,我希望在數據庫中插入數據后得到一條消息,如“您的信息已成功更新。”。 對於這項工作,我在CI_Controller中有以下功能:

function myCiInser(){
... Here is my query ...
//$data: this var is result query that is true
if($data){
    $this -> session -> set_flashdata('message', 'Your information was successfully updated.');
    redirect('url/myurl');
            }
}

我認為:

<?php
$message = $this->session->flashdata('message');
    if($message){
        echo '<div id="error_text">' . $message . '</div>';
    }
//I test this : "echo $message;" but don't give output
?>

但我不會在視圖中給出消息,但redirect已完成且工作正常。 並在表ci_sessionsuser_data數據庫中我有這個:

a:2:{s:9:“user_data”; s:0:“”; s:19:“flash:new:message”; s:42:“您的信息已成功更新。”;}

怎么解決這個問題?

更新:

我有以下錯誤(我使用chorme並通過Ctrl + Shift + ji獲取此警報):

無法加載資源:服務器響應狀態為404(未找到)

我修復它(現在我沒有錯誤)但在顯示消息中仍然是同樣的問題。 我該怎么辦?

Codeigniter 會話類文檔中 ,關於Flashdata,我們可以閱讀:

CodeIgniter支持“flashdata”或僅可用於下一個服務器請求的會話數據,然后自動清除。

您的問題可能是,當您重定向時,該過程需要多個請求,清除您的flashdata。

要查看是否是這種情況,只需將以下代碼添加到要重定向到的控制器的構造函數中:

$this->session->keep_flashdata('message');

這將使flashdata保留另一個服務器請求,允許它在之后使用。

我也有這個問題。 我不記得我在哪里看到了,但這是我的解決方案。

redirect('url/myurl','refresh');

CodeIgniter沒有將重定向視為另一個請求。 所以flashdata沒有設置在重定向中,但它是在我加載的下一頁上。

//在我們的控制器文件中設置flash數據

$this->session->set_flashdata('sessionkey', 'Value');

//之后我們需要使用重定向功能

redirect("admin/signup");

//在視圖上獲取Flash數據

$this->session->flashdata('sessionkey');

使用數據庫會話有時會引起我的問​​題。 我建議設置$config['sess_use_database'] = FALSE; config.php中 ,看看flashdata是否正常工作。

您還可以使用數據庫進行會話,但必須設置配置項:

$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;

以這種方式,會話flashdata將再次工作

除了一頁,我能夠使用session顯示/傳遞值。 我嘗試使用var_dump($this->session) ,我得到:

["flash:old:Array"]=> bool(false)
["flash:new:message"]=> string(10) "My Message"

我嘗試在頁面內回顯閃存數據,而不是在設置數據后重定向,但結果是一樣的。 我建議減少代碼,並嘗試在其他頁面中設置會話。 如果問題仍然存在,請檢查var_dump 這可能不是解決方案,但我認為它可以提供幫助。

更新 :修剪文本中的空格和換行符。 我傳遞了兩個長句子,空行和空格。

if (0) //Assume this condition is false
{   
    $this->load->view('error_page');
    // Generate validation error
}
else
{
    //Show success message
    $data = array(
                'message' => 'My message'
                           );
    $this->session->set_flashdata($data);
    $this->session->keep_flashdata($data);                      
    echo $this->session->flashdata('message');
    //echo var_dump($this->session);
    //redirect(base_url().'success_page');
}

我有同樣的問題。 檢查完我發現的代碼后,我調用$this->session->sess_destroy(); ,這會導致問題。

404(未找到)計為1個服務器請求。 它會刪除你的flashdata。

正如我觀察codeigniter flashdata。 當我在使用codeigniter redirect()方法的第二個請求中使用它時,它在mozila中工作正常,但在chrome的情況下它不起作用。

我知道我已經很晚了,但我遇到了這個問題,我無法相信在我的情況下,解決方案非常簡單

只是替換

$this->session->flashdata('message');

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

我打開Chrome開發者控制台並刪除了flashdata。 關閉它並重試它的工作原理。 版本71.0.3578.98(官方版)(64位)

我將它用於閃存數據並且易於使用。 首先,需要你有創建會話,然后在你的控制器的方法中使用它之前你想要重定向你的頁面。

創建會話后在Controller上,不要忘記加載會話和URL庫。

$this->session->set_flashdata('success', 'Oops. This email id already exist.' );
redirect("You Mehod or page");

在這種情況下,您無需轉到特定的視圖頁面來添加額外的PHP代碼。

並且在footer.php上查看過去的腳本代碼

<!-- Code for flashdata toaster -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css">
<script type="text/javascript">
    <?php if($this->session->flashdata('success')){ ?>
        toastr.success("<?php echo $this->session->flashdata('success'); ?>");
    <?php }else if($this->session->flashdata('error')){  ?>
        toastr.error("<?php echo $this->session->flashdata('error'); ?>");
    <?php }else if($this->session->flashdata('warning')){  ?>
        toastr.warning("<?php echo $this->session->flashdata('warning'); ?>");
    <?php }else if($this->session->flashdata('info')){  ?>
        toastr.info("<?php echo $this->session->flashdata('info'); ?>");
    <?php } ?>
</script>
<!-- End of flashdata script -->

祝你好運,希望它對你的問題有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM