我正在尝试弄清楚如何在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 一切正确。关键是,如果您尝试重定向到完全相同的网址,它将无法正常工作。
答案 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()
)
);
}