codeigniter flashdata не очищается
Я новичок в codeigniter, и я создаю проект, в котором пользователи создаются и управляются. здесь я использую flashdata для отображения временных сообщений, таких как"пользователь создан" и т. д.,
Мой код для установки flash-данных -
$this->session->set_flashdata('message', 'User Created.');
На мой взгляд, я назвал его
$this->session->flashdata('message');
Моя проблема заключается в том,что при создании пользователя отображается flashdata, и когда я нажимаю ссылку home, данные flash все еще доступны, но когда я нажимаю обновить/home снова, они исчезают. Я хочу, чтобы все прояснилось. когда я нажимаю на главную ссылку в первый раз. Есть ли способ закодировать его??.
6 ответов:
Flashdata будет доступна только для следующего запроса сервера, а затем автоматически очищается.
if($user_created) { $this->session->set_flashdata('success', 'User created!'); redirect('login'); } else { redirect('register'); }
Вы должны
redirectпослеuser created. Затем, когдаnext timeВы нажмете наhome linkон не появится, попробуйте это,$this->session->set_flashdata('message', 'User Created.'); redirect(base_url().'home.php');// you can change accordingly
Предполагается, что flashdata будет отображаться один раз.
И он получает исчезает на странице обновления.
Итак, если вы перенаправляете страницу на другую, она должна работать.
Если вы не обновите страницу, вы можете сделать это через jQuery.
Скажите, что ваш div отображает вспышку:
<div id="flash-messages">Success Message</div>Напишите jQuery:
<script type="text/javascript"> $(function(){ $("#flash-messages").click(function(){$(this).hide()}); }); </script>
Вы должны перенаправить страницу куда-нибудь после
$this->session->set_flash('item','value');пример :
if ($this->form_validation->run() == FALSE){ $this->session->set_flashdata('error',validation_errors()); redirect(base_url().'user/login'); } else{ $this->session->set_flashdata('success','Thank you'); redirect(base_url().'user/login'); }Обычно разработчики делают ошибку, когда они отправляют данные на одну и ту же страницу. Они устанавливают флэш-данные, но забывают перенаправить.
Вы можете использовать платформу Ajax для автоматического скрытия флэш-сообщения.Также их содержит вся флэш-операция.
Вы можете получить дополнительную информацию здесь. https://github.com/EllisLab/CodeIgniter/wiki/Ajax-Framework-For-CodeIgniter
Если вы хотите очистить set_flash в контроллере или другом файле представления, то вы можете использовать этот простой код.
$this->session->set_flashdata('error', 'User not found...'); //create set_flashUnset set_flash
//echo "<pre>"; print_r($_SESSION); die; //for check if(isset($_SESSION['error'])){ unset($_SESSION['error']); }
Comments