Кодовые данные flashdata - правильно ли я их использую? - PullRequest
14 голосов
/ 11 июня 2011

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

Ответы [ 3 ]

15 голосов
/ 11 июня 2011

Данные сеанса доступны в любом месте вашего приложения, в любое время.Вызов его непосредственно из файла представления является правильным, и поэтому он устанавливает его в контроллере.

Нет необходимости , чтобы передавать его как данные с $this->load->view() - это избыточно.Зачем в первую очередь назначать их флэш-данным в этом случае?

То, как вы делаете это, правильно.

РЕДАКТИРОВАТЬ : Я только что видел, что вы настраиваетеэто в модели вместо контроллера - что весьма спорно.Я бы предложил вернуть значение из вашего вызова модели и вместо этого установить сообщение на основе этого в вашем контроллере.

3 голосов
/ 23 июня 2012
$myArr = array('value 1', 'value 1');

$this->session->set_flashdata('myArray', $myArr);

В представлении

print_r($this->session->flashdata('myArray'));
2 голосов
/ 11 июня 2011

Я просто сохраняю его в массив и передаю его представлению:)

 $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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...