2012-08-16 3 views
38

Symfony2 경로에 선택적 매개 변수 수 있습니다 : 나는 그것이 작동 후 site/user/1를 입력하면 이제어떻게 내가 아래에이 코드가

/** 
* Lists all User entities. 
* 
* @Route("/{cid}",defaults={"cid" = null},name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{} 

을,하지만 난 site/user/를 입력 한 경우는 말한다 :

No route found 

어떻게 두 경로 모두 작동 할 수 있습니까?

답변

60

시도를 백 슬래시를 알 수없는 (site/user로 이동 끝에).

일반적으로 작동해야합니다. 비교적 비슷한 구성이 작동합니다.

그러나 다른 모든 당신은 항상 같은 행동을 즉

/** 
* Lists all User entities. 
* 
* @Route("/", name="user_no_cid") 
* @Route("/{cid}", name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{ 
33

를 사용하여 라우팅 구성에 대한 YML 파일과 같이 라우팅 매개 변수 ID에 대한 기본 값을 추가합니다

user: 
    pattern: /site/user/{id} 
    defaults: { _controller: YourBundle:Default:index, id: 1 } 

참조 문서 here

+3

영업 분명히 컨트롤러 – phpguru

+7

에 경로 주석을 사용하고는 그러나 그의 대답은 저와 몇 가지 다른 미래를위한 – Andrew

+3

주의 도움 :'pattern' 키 심포니 3 –

5

당신은 또한 GET 매개 변수와 함께 할 수있는, 예를 들어, 여러 경로를 정의 할 수 있습니다 실패 할 경우

/** 
* @param Request $request 
* 
* @return Response 
*/ 
public function displayDetailAction(Request $request) 
{ 
    if ($courseId = $request->query->get('courseId')) { 
관련 문제