Sisco
Sisco

Reputation: 21

Anchor in routing URL when using Symfony redirect function

I'm using

/**
 * @Route("page/#page")
 */
public function redirectAction()
{
    return $this->redirectToRoute('page');
}

But I need to be able to put "#" anchor, but I can't find a way of doing that. Any ideas?

Upvotes: 1

Views: 2657

Answers (3)

Vyctorya
Vyctorya

Reputation: 1438

In a controller you can't get the hash. Possible duplicate of this question.

Instead you should change your controller to:

/**
 * @Route("page/{page}")
 */
public function redirectAction($page)
{
    return $this->redirectToRoute($page);
}

You'd need to adjust the request too.

Upvotes: 1

goto
goto

Reputation: 8162

You can use redirect instead of redirectToRoute

public function yourAction()
{
    return $this->redirect(
         $this->generateUrl('url_route_name') . '#page',
         ['param1' => $param1]
     );
}

Upvotes: 1

Alvin Bunk
Alvin Bunk

Reputation: 7764

You would have to use the new Routing Improvements added in Symfony 3.2. I see you have a symfony2 tag, and it should be in the latest version of Symfony2 as well.

You can't add a anchor to routing annotation, but here's the changes you would need:

/**
 * @Route("page")
 *
 */
public function redirectAction()
{
   return $this->redirectToRoute(
      $this->get('router')->generate('page', [
         '_fragment' => 'page'
      ])
   );
}

This presumes there is a #page anchor in your page being rendered.

Upvotes: 1

Related Questions