如何重定向到同一个网址?

时间:2013-03-06 09:27:06

标签: php request silex

我正在尝试弄清楚如何在silex中处理表单后重定向到同一个url:

public function someAction(Application $app) 
{
    $form = ... // building form

    if ('POST' === $app['request']->getMethod()) {
        $form->bindRequest($app['request']);

        if ($form->isValid()) 
        {
            $url = $app['url_generator']->generate(
                $app['request']->get('_route'),
                $app['request']->get('_route_params')
            );

            return $app->redirect($url);
        }
    }

    return $app['twig']->render(
       'form.html.twig', 
        array(
            'form' => $form->createView()
        )
    );
}

这可能在Symfony,但它在这里不起作用。 (当然,我总是可以重定向到$url?success

之类的东西

UPD:使用$ url 一切正确。关键是,如果您尝试重定向到完全相同的网址,它将无法正常工作。

2 个答案:

答案 0 :(得分:1)

Request类有getRequestUri()方法。你可以这样使用:

return $app->redirect($request->getRequestUri());

答案 1 :(得分:0)

很抱歉用另一个问题回答您的问题,但为什么您想要重定向到同一页面?路线的逻辑应该只是在处理表格后显示您的视图。

public function someAction(Application $app) 
{
    $form = ... // building form

    if ('POST' === $app['request']->getMethod()) {
        $form->bindRequest($app['request']);

        if ($form->isValid()) 
        {
            $url = $app['url_generator']->generate(
                $app['request']->get('_route'),
                $app['request']->get('_route_params')
            );

            //return $app->redirect($url);
            // just remove the return here and you're all set!
        }
    }

    return $app['twig']->render(
       'form.html.twig', 
        array(
            'form' => $form->createView()
        )
    );
}