Codeigniter flashdata - правильно ли я использую его?
Я узнал о flashdata и решил использовать его для отображения сообщений на основе взаимодействия с базами данных.
Например, если строки не затронуты, я хочу отобразить Post id is invalid or does not exist!
В моей модели
function delete_post($post_id)
{
$this->db->where('user_id', $user_id);
$this->db->where('post_id', $post_id);
$this->db->delete('posts');
if ($this->db->affected_rows() == 0)
{
$this->session->set_flashdata('result', 'Post id is invalid or does not exist!');
redirect('/posts/management');
return FALSE;
}
else
{
redirect('/posts/management');
return TRUE;
}
}
и, на мой взгляд,
if ($this->session->flashdata('result') != ''):
echo $this->session->flashdata('result');
endif;
Это работает нормально, но в документации CI нет примера, как передавать flashdata между MVC. Я обеспокоен. Правильно ли я делаю это?
edit: Я, кажется, оставил FALSE и TRUE из предыдущей попытки. Мне это, вероятно, не понадобится.
Ответы
Ответ 1
Данные сеанса доступны в любом месте вашего приложения в любое время. Вызов его непосредственно из файла просмотра является правильным, и поэтому он устанавливает его в контроллере.
Нет необходимости вообще передавать его в виде данных с помощью $this->load->view()
- он избыточный. Зачем назначать его в flashdata в первую очередь в этом случае?
Как вы это делаете, правильно.
ИЗМЕНИТЬ: Я только что видел, как вы устанавливаете его в модели вместо контроллера - что весьма спорно. Я бы предложил вернуть значение из вашего вызова модели и установить вместо него сообщение на основе этого в вашем контроллере.
Ответ 2
$myArr = array('value 1', 'value 1');
$this->session->set_flashdata('myArray', $myArr);
В представлении
print_r($this->session->flashdata('myArray'));
Ответ 3
Я просто сохраняю его в массиве и передаю его в представление:)
$data['wow_list'] = $this->Wow_model->getWow($uid);
$this->session->set_flashdata('message', 'Done. You have added new task.');
$data['flash_message'] = $this->session->flashdata('message');
$this->load->view('wow/index', $data);
Вид
<?= $flash_message ?>
Данные передаются с контроллера на представление в виде массива или объекта во втором параметре просмотр функции загрузки.
http://codeigniter.com/user_guide/general/views.html