重定向后未设置Flash消息

时间:2016-04-20 09:09:23

标签: php symfony

我正在尝试设置一条flash消息,如果我在方法中渲染模板,这样可以正常工作,如下所示:

return $this->render('login/forgotten_password.html.twig', [
    'form' => $form->createView(),
]);

但是,如果我返回RedirectResponse未设置flash消息,即使我重定向到完全相同的方法:

return new RedirectResponse($this->generateUrl('forgotten_password', []));

为什么这不起作用,我该如何使其发挥作用?

3 个答案:

答案 0 :(得分:0)

使用会话进行Flash消息显示。

在生成输出后使会话失效,并编写隐藏flashmessage div的javascript。

public class BillsCustomList extends ArrayAdapter<String>
{
    private List<BillObject> dataList;
    private Activity context;

    public BillsCustomList(Activity context, List<BillObject> dataList)
    {
        super(context, R.layout.bills_list_view, doc_no);
        this.context =context;
        this.dataList = dataList;

    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        LayoutInflater inflater = context.getLayoutInflater();
        if(convertView == null)
        {
            convertView= inflater.inflate(R.layout.bills_list_view, null, true);
        }
        // find view by id
        ...code

        // get data from dataList by position
        BillObject billObject = dataList.get(position);
        textViewDocno.setText(billObject.doc_no);
        textViewDt.setText(billObject.date);
        // like this do more

        return listViewItem;
    }

}

jQuery隐藏Flash消息

<?php
if(isset($_SESSION['SUCCESS']) && !empty($_SESSION['SUCCESS'])){
    if($_SESSION['SUCCESS']=='TRUE'){
        $alert_class = 'alert-success';
    }else{
        $alert_class = 'alert-danger';
    }
    ?>
    <div class="row">
        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
            <div class="alert <?php echo $alert_class?>" role="alert">
                <?php
                if(isset($_SESSION['MESSAGE']) && !empty($_SESSION['MESSAGE'])){
                    echo $_SESSION['MESSAGE'];
                }
                unset($_SESSION['SUCCESS']);
                unset($_SESSION['MESSAGE']);
                ?>
            </div>
        </div>
    </div>
<?php
}
?>

答案 1 :(得分:0)

您使用的是哪个版本的symfony?

我们在2.6.1上运行,如果你在重定向之前设置它,它就可以工作:

$request->getSession()->getFlashBag()->add("success", "Test");

答案 2 :(得分:0)

这应该可以在您的控制器中使用

$this->get('session')->getFlashBag()->add('info', 'Test');