Я пытаюсь сделать небольшое приложение, поэтому я выбираю обезжиренные рамки. Мне нужно показать некоторые сообщения, основанные на успехе или ошибке. Предположим, что если я хочу добавить пользователя, то при успешном добавлении показать сообщение о том, что пользователь был успешно добавлен, или, если нет, показать сообщение об ошибке, что пользователь не может быть добавлен. Я не могу разобраться. Вот мой код Userscontroller
public function index(){
$user = new User($this->db);
$this->f3->set('users',$user->all());
//there should be a way to decide if its error message or success and after display,
//it shouldn't be displayed again for the same task.
//or may be it should be check in view file, I don't know where is the correct place
// to do it
$this->f3->set('page_head','User List');
$this->f3->set('view','users/list.htm');
}
public function create(){
if($this->f3->exists('POST.create')){
$user = new User($this->db);
$user->add();
//set session here to show in view file after redirect to list page
$this->f3->reroute('/users');
} else{
$this->f3->set('page_head','Create User');
$this->f3->set('view','users/create.htm');
}
}
Мой контроллер флеш-сообщений выглядит так: https://github.com/ikkez/f3-flash/blob/master/lib/flash.php
Чтобы установить сообщение я делаю:
if ($this->resource->updateProperty(array('_id = ?', $params['id']), 'published', true)) {
\Flash::instance()->addMessage('Your post was published. Hurray!', 'success');
} else {
\Flash::instance()->addMessage('This Post ID was not found', 'danger');
}
$f3->reroute('/admin/post');
Для отображения сообщений я включаю этот шаблон в свой макет https://github.com/ikkez/fabulog/blob/master/app/ui/templates/alert.html которая вызывает функцию, которая сбрасывает и очищает все сообщения, поэтому они будут отображаться только один раз. Вы также можете использовать сессию в шаблоне токена, например {{@SESSION.flash}}
и использовать его для <repeat>
в шаблоне.
Других решений пока нет …