2014-08-27 1 views
0

웹 상점에서 제품을 필터링 할 때 Symfony 양식 빌더를 사용합니다. 양식이 제출 때, 내가 같은 URL 얻을 :SEF 양식 URL을 사용하고 물음표를 이스케이프 처리하려면 어떻게해야합니까?

/category?vendor=apple+htc&price=500-1000 

을하지만 SEF URL 이상을 사용 할 필요가 보이는 같은 :

/category/apple+htc/500-1000 

또는 속성

/category/173-181-159-160 

또는 ID와

어쩌면 해시처럼 :

/category/21232f297a57a5a743894a0e4a801fc3 

더 나은 무엇을 사용하고 Symfony 양식으로 그것을 실현할 수 있습니까?

답변

1

우선 더 많은 코드 (카테고리 액션, formBuilder 코드)를 보는 것이 도움이 될 것입니다. 코드가 없으면 매개 변수 (apple 및 htc)를 보내고 컨트롤러에서 필터링하는 것으로 가정합니다.

양식 URL을 SEF로 지정하려면 양식 작업 속성에서 직접 설정해야합니다. Symfony는 프론트 엔드가 아니라 백엔드 데이터 조작에 도움을 줄 수 있습니다. 동적 인 action 설정을 위해 javascript를 사용할 수 있습니다. 먼저 당신이 당신의 폼 요소의 onChange 이벤트를 첨부하여이 기능에 변경된 값을 보내 : 양식은 당신이 형태 action에 지정된 URL에 submited됩니다 제출

function changeAction(phoneModel, priceRange){ 
    //some logic to transform values of your form items to SEF url elements 
    document.getElementById('form_id').action = "/category/" + phoneModel + 
    + "/" + priceRange; 
} 

.

+0

그것은 좋은 솔루션, 감사입니다! –

1

심포니 라우팅의 문제점은 무엇입니까?

예 :

category: 
pattern: /category/{vendor}/{price}/{other_params} 
defaults: { _controller: AcmeNameBundle:Category, price: false, other_params: false } 
+0

보낸 양식 요청에서이 경로를 작성해야합니다. –

+0

모든 매개 변수를 양식으로 알고 기본 값을 false로 설정할 수 있기 때문에 여전히 문제가 발생하지 않습니다. 양식에 @category 라우트에 대한 조치가 있어야하며 evrithing이 정상적으로 작동합니다. 어쨌든, 그것은 당신의 선택입니다. – Srdjan

+0

예, 맞습니다.하지만 양식의 작업은 JS로 생성해야하며 답변에서 언급하지 않았습니다. –