Symfony 3:在控制器操作中,设置一个新的请求参数然后重定向

时间:2017-04-17 22:12:22

标签: symfony symfony-3.2

在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重定向传递给新操作时,为请求添加参数?

1 个答案:

答案 0 :(得分:0)

您无法在重定向中传递此类对象。但是你可以在数组中发送参数并在接收路径中处理它们,如下所示:

/**
 * @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;
}

如果您需要更多参数,只需将它们添加到路线即可。