Я учусь использовать тонкую фреймворк (v3), и я застрял в попытке сделать перенаправление с флэш-сообщением. У меня есть домашний URL-адрес и URI-флэш-памяти, которые должны установить флеш-сообщение и перенаправить на дом.Как использовать флэш-сообщения с переадресацией в slim 3 и twig
Мой самозагрузки код:
use Slim\App;
use Slim\Container;
use Slim\Flash;
$container = new Container(['settings' => ['displayErrorDetails' => true]]);
$container['view'] = function ($container) {
$view = new \Slim\Views\Twig([
INC_ROOT. '/app/views',
INC_ROOT. '/app/views/templates',
INC_ROOT. '/app/views/templates/partials',], [
'debug' => true
]);
$view->addExtension(new \Slim\Views\TwigExtension(
$container['router'],
$container['request']->getUri()
));
$view->getEnvironment()->addGlobal('flash', $container['flash']);
return $view;
};
$container['flash'] = function() {
return new Flash\Messages();
};
$app = new App($container);
Мой файл маршрутизации:
$app->get('/', function($request, $response, $args){
return $this->view->render($response, 'home.twig');
})->setName('home');
$app->get('/flash', function ($req, $res, $args) {
// Set flash message for next request
$this->flash->addMessage('global', 'This is a message');
// Redirect
return $res->withStatus(301)->withHeader("Location", $this->router->pathFor('home'));
});
И я пытаюсь использовать сообщение в веточке, как:
{{ flash.getMessage('global')[0] }}
редирект происходит, но флэш-сообщение не передается в новое место. Что я делаю неправильно?
Большое спасибо за этот ответ, это имеет логичный смысл для меня! Тем не менее, флэш-сообщение все еще не отображается. Есть ли ошибка в том, как я пытаюсь передать сообщение в twig? – EmmanuelYakubu
Я внес некоторые изменения, которые должны сработать для вас. – Vincent
Это, похоже, работает после обновления. Любые идеи, почему это может быть? – EmmanuelYakubu