Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SlimPHP v3如何在视图上显示flash消息_Php_Twig_Slim_Flash Message_Twig Extension - Fatal编程技术网

SlimPHP v3如何在视图上显示flash消息

SlimPHP v3如何在视图上显示flash消息,php,twig,slim,flash-message,twig-extension,Php,Twig,Slim,Flash Message,Twig Extension,在他们的新文档中没有任何关于flash消息的内容 我从他们的github存储库(slimphp/slimflash)安装了flash扩展。一切正常,我可以添加消息,也可以获取这些消息 // Adding a message $this->flash->addMessage('test', 'This is a message'); // Getting a message $this->flash->getMessage('test')[0]; 但这只适用于内部路线。

在他们的新文档中没有任何关于flash消息的内容

我从他们的github存储库(slimphp/slimflash)安装了flash扩展。一切正常,我可以添加消息,也可以获取这些消息

// Adding a message
$this->flash->addMessage('test', 'This is a message');

// Getting a message
$this->flash->getMessage('test')[0];
但这只适用于内部路线。当然,我希望这些消息显示在我的视图上

但我只是不知道如何在twig视图上获取此消息

我已经试过:

{{ 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 }}

谢谢你的帮助

您可以从render方法将flash消息添加到数据属性中:

$this->view->render($res, 'path/to/template.twig', [
    'flash' => $this->flash
]);
或者您可以添加一个中间件,并将您的flash实例添加到twig参数中

$app->add(function ($request, $response, $next) {
    $this->view->offsetSet("flash", $this->flash);
    return $next($request, $response);
});
然后,应该可以使用


{{flash.getMessage('test')}

您的中间件解决方案运行良好,谢谢。但不是使用$app->。。。您需要使用$this->。。。在改变这个之后,它工作得很好。你知道如何为Slim 4做到这一点吗?