В их новой документации нет ничего для флеш-сообщений.
Я установил расширение flash из их репозитория github (slimphp / Slim-Flash). Все отлично работает, я могу добавлять сообщения, а также получать эти сообщения.
// Adding a message
$this->flash->addMessage('test', 'This is a message');
// Getting a message
$this->flash->getMessage('test')[0];
Но это работает только внутри маршрутов. Конечно, я хочу, чтобы эти сообщения отображались в моем представлении.
Но я просто не знаю, как получить это сообщение в окне ветки.
Я уже попробовал:
{{ container.flash.message('test')[0] }}
{{ container.flash.getMessage('test')[0] }}
{{ this.flash.message('test')[0] }}
{{ this.flash.getMessage('test')[0] }}
{{ flash.message('test')[0] }}
{{ flash.getMessage('test')[0] }}
{{ app.flash.message('test')[0] }}
{{ app.flash.getMessage('test')[0] }}
{{ container.flash.test }}
Спасибо за помощь!
Вы можете добавить флэш-сообщение в атрибут данных из метода рендеринга:
$this->view->render($res, 'path/to/template.twig', [
'flash' => $this->flash
]);
Или вы можете добавить промежуточное программное обеспечение и добавить ваш экземпляр flash в параметры ветки
$app->add(function ($request, $response, $next) {
$this->view->offsetSet("flash", $this->flash);
return $next($request, $response);
});
тогда должна быть возможность доступа к сообщениям внутри шаблона ветки с
{{ flash.getMessage('test') }}
Других решений пока нет …