有没有办法从Symfony外部访问FlashBag?

有没有办法从Symfony外部访问FlashBag?,symfony,flash-message,Symfony,Flash Message,我在与Symfony应用程序交互的应用程序中工作,并呈现使用FlashBag的Symfony应用程序中的模板。到目前为止,我所拥有的: use Symfony\Component\HttpFoundation\Session\Flash\FlashBag; /*snipped code that creates a Symfony container*/ $container->enterScope('request'); $container->set('request', n

我在与Symfony应用程序交互的应用程序中工作,并呈现使用FlashBag的Symfony应用程序中的模板。到目前为止,我所拥有的:

use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;

/*snipped code that creates a Symfony container*/

$container->enterScope('request');
$container->set('request', new \Symfony\Component\HttpFoundation\Request(), 'request');
$twig = $container->get('twig');
$twig->addGlobal('app', array('session' => array('flashbag' => new FlashBag())));
echo $twig->render('AdminBundle::flashMessages.html.twig');
问题是我创建的FlashBag对象没有拾取会话中的Flash消息,因此从技术上讲,虽然细枝模板确实渲染了Flash消息,但它实际上从未显示Flash消息


另一个困难点是,外部应用程序使用会话,因此仅创建Symfony会话对象也会导致问题。

我发现Symfony的所有flash消息都存储在
$\u会话[''''u sf2\u flash']
中。创建FlashBag后,我调用initialize并在
$\u SESSION
中传递flash消息,就像这样,然后将FlashBag作为全局添加到Twig:

$flashMessages = isset($_SESSION['_sf2_flashes']) ? $_SESSION['_sf2_flashes'] : array();
$flash->initialize($flashMessages);
我还发现,通过这种方式,flash消息似乎不会像您以正常方式访问它们时那样从
$\u会话中被消耗,因此我还必须调用:

unset($_SESSION['_sf2_flashes']);

您需要使用Request::createFromGlobals()来填充请求对象。然后您可以使用该请求对象来获取flash消息