SlimPHP v3, как отображать флеш-сообщение на экране

В их новой документации нет ничего для флеш-сообщений.

Я установил расширение 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 }}

Спасибо за помощь!

3

Решение

Вы можете добавить флэш-сообщение в атрибут данных из метода рендеринга:

$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') }}

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]