khernik
khernik

Reputation: 2091

Optional get parameter (with slashes) in default / route

The main page on my website is an empty link, like:

www.randomlink.com/

That's the controller with the "/" route. The problem is that I have to use get parameters here, according to the following pattern:

key1/value1/key2/value2

I add these parameters on form submit, and the form redirects back to the main page.

The problem is that, as you can see, I get:

www.randomlink.com/key1/value1/key2/value2

And thus it opens key1 controller, instead of the default one.


/**
 * Display dashboard
 *
 * @Route("/{path}", 
 *        name="dashboard",
 *        defaults={"path" = "-1"},
 *        requirements={"path" = ".+"})
 * @Template()
 */
public function displayAction($path, Request $request)
{
    if($_POST)
    {
        // add get parameters to $path

        return $this->redirect($this->generateUrl('dashboard', ['path' => $path]));
    }

    // do something
}

How can I solve this issue?

Upvotes: 1

Views: 47

Answers (1)

Dincho Todorov
Dincho Todorov

Reputation: 350

Probably your routing configuration order is not correct: see "Earlier Routes always Win" in the docs

Workaround: What about using query string like: www.randomlink.com/?path=key1/value1/key2/value2, then $request->query->get('path') ?

Upvotes: 1

Related Questions