有没有办法从Symfony外部访问FlashBag?
我在与Symfony应用程序交互的应用程序中工作,并呈现使用FlashBag的Symfony应用程序中的模板。到目前为止,我所拥有的:有没有办法从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
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消息