2011-04-06 4 views
0

ID를 한 동작에서 다음 동작으로 전달하고 싶지만 URL에 표시하지 않습니다. 그것을 숨길 수있는 방법이 있습니까? 심포니를 사용Symfony/Routing : POST를 사용하여 URL의 쿼리 매개 변수 피하기

, 나는 누구의 URL해야 폼이 ​​처리 될 때 /signup/done , 내가 signupSuccess 조치로 리디렉션 및 향후 사용을 위해 최근 ID 생성을 전달하고자하는 가입 완료 페이지를 만들었습니다. 그래서 다음과 같이

$this->redirect('@signup_done?id=' . $sign_up->getId()); 

라우팅은 ... 사용 : 나는 URL에 그것을 원하지 않기 때문에 마지막 ID : 난을 피할 수

signup_done: 
    url: /signup/done 
    param: { module: SignUp, action: signupDone } 

. 하지만 결과 URL은 /signup/done?id=1입니다.

그냥 실험으로 템플릿에 넣으려고했습니다.

<?php echo link_to('Sign-up again', '@signup_done?id=1', 'post=true') ?> 

게시를 사용하는 경우에도 검색어 매개 변수가 URL에 나타납니다.

필요성 : 한 동작에서 다음 동작으로 ID를 전달하고 싶지만 URL에 표시하지 않습니다. 그것을 숨길 수있는 방법이 있습니까?

답변

1

ID를 $request->setParameter('id', $id)을 사용하여 요청의 매개 변수로 설정했으며 다음 동작에서 사용할 수있었습니다.

이렇게하면 URL을 깨끗하게 유지할 수 있습니다.

1

게시하려면 양식이 필요합니다. 심포니 1.2에는 헬프가있어서 전화를 걸었고 그냥 만들었지 만 좋은 코드를 홍보하기 위해 제거되었습니다.

'다시 가입하기'텍스트를 표시하는 방법에 따라 간단한 양식과 제출 버튼을 만들거나 링크를 만들고 클릭 수신기를 연결 한 다음 JS를 통해 양식을 만들 수 있습니다. 그것을 게시하십시오.

url_for, link_to 등의 경로에 전달하는 모든 매개 변수는 get 매개 변수로 끝납니다.

+0

하지만 link_to에서 언급 한 post = true 속성은 JS를 통해 양식을 트리거합니다. 하이퍼 링크에 query-param이있는 것으로 나타나고 페이지의 URL도 마찬가지입니다. 내 라우팅 정의에 문제가 있습니까? – Prasad

관련 문제