Symfony 3:在控制器操作中,设置一个新的请求参数然后重定向
Symfony 3: in controller action, set a new request param then redirect
在 Symfony 3 控制器操作中,我向请求添加了一个参数,然后通过 307 重定向将其发送到另一个控制器操作。
/**
* @Route("/first", name="my_first_action")
*/
public function firstAction(Request $request)
{
$request->request->set('new_param', 1);
dump($request->request->all()); // new param is present
return $this->redirectToRoute('my_second_action', [
'request' => $request
], 307);
}
重定向后新参数不在请求中。
/**
* @Route("/second", name="my_second_action")
*/
public function secondAction(Request $request)
{
dump($request->request->all()); // new param is not present
exit;
}
如何向请求添加参数,以便在请求通过 307 重定向传递给新操作时可用?
您不能在重定向中传递这样的对象。但是你可以在数组中向你发送参数并在接收路由中处理它们,如下所示:
/**
* @Route("/first", name="my_first_action")
*/
public function firstAction(Request $request)
{
return $this->redirectToRoute('my_second_action', [
'new_param' => 1
], 307);
}
/**
* @Route("/second/{new_param}", name="my_second_action")
*/
public function secondAction($new_param)
{
dump($new_param)); // Either dump or use the parameter
exit;
}
如果您需要更多参数,您可以将它们添加到路由中。
在 Symfony 3 控制器操作中,我向请求添加了一个参数,然后通过 307 重定向将其发送到另一个控制器操作。
/**
* @Route("/first", name="my_first_action")
*/
public function firstAction(Request $request)
{
$request->request->set('new_param', 1);
dump($request->request->all()); // new param is present
return $this->redirectToRoute('my_second_action', [
'request' => $request
], 307);
}
重定向后新参数不在请求中。
/**
* @Route("/second", name="my_second_action")
*/
public function secondAction(Request $request)
{
dump($request->request->all()); // new param is not present
exit;
}
如何向请求添加参数,以便在请求通过 307 重定向传递给新操作时可用?
您不能在重定向中传递这样的对象。但是你可以在数组中向你发送参数并在接收路由中处理它们,如下所示:
/**
* @Route("/first", name="my_first_action")
*/
public function firstAction(Request $request)
{
return $this->redirectToRoute('my_second_action', [
'new_param' => 1
], 307);
}
/**
* @Route("/second/{new_param}", name="my_second_action")
*/
public function secondAction($new_param)
{
dump($new_param)); // Either dump or use the parameter
exit;
}
如果您需要更多参数,您可以将它们添加到路由中。