Multiple parameters implements in Symfony2 routing

12,112

Solution 1

You should read the symfony doc anyway. see http://symfony.com/doc/current/book/routing.html

// app/config/routing.yml
person:
    path:      /person/{name}-{age}-{gender}
    defaults:  { _controller: AcmeBlogBundle:Person:index }

// src/Acme/BlogBundle/Controller/PersonController.php
namespace Acme\BlogBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class PersonController extends Controller
{
    public function indexAction($name, $age, $gender)
    {
        // do something
    }
}

Solution 2

You could access query parameter in Request object.

$request->query->get('query_parameter_name_here');

For example,

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class PersonController extends Controller
{
    public function indexAction(Request $request)
    {
        // retrieve query parameter with $request
        $person = $request->query->get('name');
        $age = $request->query->get('age');
    }
}

Note that,

For GET /person, you access the query attribute

$request->query

For POST /person, you access the request attribute

$request->request
Share:
12,112
user2241859
Author by

user2241859

Updated on June 04, 2022

Comments

  • user2241859
    user2241859 almost 2 years

    Here is normal GET request URL

    http://localhost/person.php?name='Jack'&age=25&gender='male'
    

    How to implement it to Symfony2 routing?


    After test here is my solution:

    acme_person_info:
        pattern:  /person/name/{name}/age/{age}/gender/{gender}
        defaults: { _controller: AcmeUserBundle:Person:info }
    

    class PersonController extends Controller
    {
        public function infoAction($name, $age, $gender) 
        {
                 // do something here
        }
    
    }