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

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 из предыдущей попытки. Мне это, вероятно, не понадобится.

4b9b3361

Ответ 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