2013-11-25 33 views
0

這是正常GET請求的URL多個參數實現了Symfony2的路由

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

如何實現它向Symfony2的路由?


測試以後這裏是我的解決方案:

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 
    } 

} 

回答

2

你應該閱讀反正symfony的文檔。請參閱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 
    } 
} 
1

您可以訪問Request對象中的查詢參數。

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

例如,

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'); 
    } 
} 

需要注意的是,

對於GET /人,您訪問query屬性

$request->query 

對於POST /人,您訪問request屬性

$request->request