Как отправить переменные данные при перенаправлении на предыдущую страницу - PullRequest
6 голосов
/ 20 декабря 2011

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

        if (isset($_SERVER['HTTP_REFERER']))
         {
         $this->session->set_userdata('previous_page', $_SERVER['HTTP_REFERER']);
         }
         else
         {
         $this->session->set_userdata('previous_page', base_url());
         }

Код выше, который я использую в контроллере, и следующий код в другом контроллере.

    .... some other stuffs... I am updating database values here....

        $this->db->where('t_expenseid', $t_expenseid);
        query=$this->db->update('teacherexpense', $data); 


        redirect($this->session->userdata('previous_page'));

Приведенный выше код работает нормально, но проблема, с которой я сталкиваюсь, заключается в том, что я хочу отправить сообщение об успешном завершении с перенаправлением, чтобы при загрузке предыдущей страницы появилось сообщение об успешном выполнении (у меня уже есть jquery для этого). И для этого я добавил следующий код над перенаправлением, но я не знаю, как отправить $ data или сообщение вместе с перенаправлением. И если я смогу отправить его, как получить значение в контроллере предыдущей страницы.

 $data['msg']='Information Has been Successfully Inserted'; 

Не могли бы вы сказать мне, как отправить его, а затем получить его?

Спасибо:)

Ответы [ 2 ]

10 голосов
/ 22 декабря 2013

Вы можете использовать set_flashdata для CI. Вы можете использовать только один раз это сообщение после того, как сообщение об обновлении страницы станет пустым.

  $this->session->set_flashdata('message', 'Authentication failed');

  redirect(site_url('message/index/'), 'refresh'); 

И на этой странице вы можете поймать это сообщение по

$message = $this->session->flashdata('message').
2 голосов
/ 20 декабря 2011

Рассмотрите возможность использования flashdata , которая обычно используется в ситуациях, когда вы хотите перенаправить на страницу и отобразить сообщение. Имейте в виду, что сообщение будет отображаться только один раз. Если пользователь обновит страницу, сообщение исчезнет.

Вот как бы вы его использовали:

$this->db->where('t_expenseid', $t_expenseid);
query = $this->db->update('teacherexpense', $data);

// set flashdata
$this->session->set_flashdata('message', 'Information Has been Successfully Inserted');

redirect($this->session->userdata('previous_page'));

Затем на «предыдущей странице» вы можете проверить сообщение и отобразить его, если оно существует:

// get flashdata
$message = $this->session->flashdata('message');

if ($message) {
    // pass message to view, etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...