Подтвердить что ты не робот

$ this-> session-> set_flashdata(), а затем $this-> session-> flashdata() не работает в codeigniter

Пожалуйста, взгляните на следующий код:

$this->session->set_flashdata('message', 'This is a message.');
var_dump($this->session->flashdata('message'));

Он возвращает bool(false).

Я надеюсь, что после этого не будет NEED a redirect(), потому что несколько раз мне нужно вызвать его сразу после установки flashdata в представлении.


Изменить после venkat комментарий

$this->session->set_flashdata('message', 'This is a message.');
$this->session->keep_flashdata('message');
var_dump($this->session->flashdata('message'));

К сожалению, нет разницы.

4b9b3361

Ответ 1

Хорошо, документация действительно указывает, что

CodeIgniter поддерживает "flashdata" или данные сеанса, которые будут только доступны для следующего запроса сервера и затем автоматически очищено.

как первое, что obviusly означает, что вам нужно выполнить новый запрос сервера. Переадресация, обновление, ссылка или другое средство для отправки пользователю следующего запроса.

Зачем использовать flashdata, если вы используете его в одном запросе? Вы могли бы также не использовать flashdata или использовать обычный сеанс.

Ответ 2

// Set flash data 
$this->session->set_flashdata('message_name', 'This is my message');
// After that you need to used redirect function instead of load view such as 
redirect("admin/signup");

// Get Flash data on view 
$this->session->flashdata('message_name');

Ответ 3

Чтобы установить flashdata, вам необходимо перенаправить функцию контроллера

$this->session->set_flashdata('message_name', 'This is test message');

//redirect to some function
redirect("controller/function_name");

//echo in view or controller
$this->session->flashdata('message_name');

Ответ 4

Измените файл config.php:

$config['sess_use_database'] = TRUE;

To:

$config['sess_use_database'] = FALSE;

Это работает для меня.

Ответ 5

Отображение флэш-сообщения после перенаправления в Codeigniter

В вашем контроллере установите этот

<?php

public function change_password(){







if($this->input->post('submit')){
$change = $this->common_register->change_password();

if($change == true){
$messge = array('message' => 'Password chnage successfully','class' => 'alert alert-success fade in');
$this->session->set_flashdata('item', $messge);
}else{
$messge = array('message' => 'Wrong password enter','class' => 'alert alert-danger fade in');
$this->session->set_flashdata('item',$messge );
}
$this->session->keep_flashdata('item',$messge);



redirect('controllername/methodname','refresh');
}

?>

In Your View File Set this
<script type="application/javascript">
/** After windod Load */
$(window).bind("load", function() {
  window.setTimeout(function() {
    $(".alert").fadeTo(500, 0).slideUp(500, function(){
        $(this).remove();
    });
}, 4000);
});
</script>

<?php

if($this->session->flashdata('item')) {
$message = $this->session->flashdata('item');
?>
<div class="<?php echo $message['class'] ?>"><?php echo $message['message']; ?>

</div>
<?php
}

?>

Пожалуйста, проверьте ниже ссылку Отображение флэш-сообщения после перенаправления в Codeigniter

Ответ 6

Set:

$config['sess_use_database'] = TRUE;

To:

$config['sess_use_database'] = FALSE;

Он отлично работает.