CodeIgniter: Показываем сообщения пользователю на его действия

CodeIgniter: Показываем сообщения пользователю на его действия Люди улыбаются друг другу, это располагает к дружелюбию и хорошим отношениям впоследствии. Тоже самое и в виртуальной среде: люди хотят не путаться, не гадать что произошло и какие действия нужно делать дальше.

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

 В CodeIgniter это можно реализовать несколькими способами.

1 способ (обычная передача переменной):

controller

$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
...
$this->load->view('includes/template', $this->data);

view

<?php if ($message){ echo "<div class='message'>".$message."</div>";}?>


2 способ (через класс Session):

Убедитесь, что у  вас инициализирован класс Session  или в config или подключен в контроллере (см. Session class)

CodeIgniter supports "flashdata", or session data that will only be available for the next server request, and are then automatically cleared. These can be very useful, and are typically used for informational or status messages (for example: "record 2 deleted").

Note: Flash variables are prefaced with "flash_" so avoid this prefix in your own session names.

To add flashdata:

$this->session->set_flashdata('item', 'value');

You can also pass an array to set_flashdata(), in the same manner as set_userdata().

To read a flashdata variable:

$this->session->flashdata('item');

If you find that you need to preserve a flashdata variable through an additional request, you can do so using the keep_flashdata() function.

$this->session->keep_flashdata('item');

Поэтому:
controller
$message_data = array('message_type' => "message_success", 'message' => $this->ion_auth->messages());
$this->session->set_flashdata($message_data);
view
if ($this->session->flashdata('message')){
                echo "<div class='".$this->session->flashdata('message_type')."' id='flashdata'>".$this->session->flashdata('message')."</div>"; 

Если сессии храните в БД, то в ней в поле user_data удаляется старое сообщение flash data и перезаписывается новым, не затрагивая другие переменные сессии.




Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.