0

In a Symfony 3 controller action, I add a parameter to the request and then send it to another controller action via 307 redirect.

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

After redirect the new parameter is not in the request.

/**
 * @Route("/second", name="my_second_action")
 */
public function secondAction(Request $request)
{
    dump($request->request->all()); // new param is not present
    exit;
}

How do I add a parameter to the request so that it is available when the request gets passed to a new action via 307 redirect?

brietsparks
  • 4,776
  • 8
  • 35
  • 69

1 Answers1

0

You can't pass objects like that in the redirect. But you can send you parameters in the array and handle them in the receiving route like so:

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

If you need more parameters, you can just add them to the Route.

Alvin Bunk
  • 7,621
  • 3
  • 29
  • 45