2013-09-27 4 views
0

나는 심포니와 초보자 해요, 나는 다음과 같은 포맷 된 URL에서 모든 부품을 얻으려고 :Symfony2 경로에서 경로 부분을 얻는 방법

...pathToSite/Symfony/pathToBundleControllerAction/part1/part2/...../partN 

내가 모든 part[1..N]을 얻을 수있을 것입니다 단일 경로를 통해 서버에 여러 데이터 유형을 푸시하기 위해 알 수없는 길이의 pathes를 갖는 것이 목표이기 때문에 개별적으로.

(컨트롤러에서) $this->getRequest()->query->all()과 같이 웹에서 발견 된 유사 콘텐츠를 사용해 보았지만 예상 한 바가 없습니다.

라우팅을 수정하여 아주 간단한 해결책이 있습니까?

감사합니다.

답변

0

질문에 답하기 위해 이러한 내용을 분석 할 필요가 없습니다. 요청의 일부이며 요청을 고유하게 정의해야합니다.

# routing.yml: 
dummy_page_homepage: 
    pattern: /hello/{name} 
    defaults: { _controller: DummyPageBundle:Default:index } 

// DefaultController.php 
public function indexAction($name) 
{ 
    return $this->render('DummyPageBundle:Default:index.html.twig', array('name' => $name)); 
} 

방법 {이름} 및 $ 이름에 맞게 참조 : 예를 들어, 다음과 같은 잘 알려진 예를? 즉,/hello/...가 구문 분석 된 후 원하는대로 사용할 수있는 name 함수 매개 변수로 전달 된 것을 의미합니다. 요청 URL에 다음과 같은 내용이 없으면/hello를 사용하면 예외가 발견되지 않습니다. 경로는 고유하며 매개 변수의 이름과 번호는 어떤 경로가 취해질지를 정의합니다.

이제 궁금한 점이 있으면 알 수없는 매개 변수가 필요합니다. 나는 이것이 Symfony에서 가능하다고 생각하지 않는다. 솔직히 말해서, 나는 그것이 모든 MVC 프레임 워크에서 가능하다고 생각하지 않습니다. 나는 당신이 이것으로 잘못된 접근법을 선택했다고 생각합니다. 내가 너라면 내가 할 수있는 일이야.

우선, 일종의 삽입/업데이트 기능을 위해 서버에 데이터를 보내려는 것 같습니다. HTTP 표준을 보면 GET 요청은 이름 그대로 서버를 수정하지 않고 가져옵니다. 즉, POST 요청을 사용해야합니다. 그렇다면 POST 변수와 같은 긴 변수를 채우고 문제없이 서버로 보낼 수 있습니다. 그런 다음 서버 로직을 사용하여 해당 변수를 가져 와서 구문 분석 할 수 있습니다 (Symfony를 사용하면 검색된 Request 객체 인스턴스를 사용하여 GET 또는 POST 변수를 쉽게 얻을 수 있습니다). 또한 GET 변수에 제한된 양의 데이터 만 채울 수 있으며 요청 부분 자체의 길이도 제한된다는 것이 확실합니다 (100 %는 아니지만). 그래서 POST 변수를 사용해야합니다. 유스 케이스에 더 잘 맞는 경우에는 POST 배열 변수를 보내고, 값 part1, part2 ... partn을 배열 값으로 채우면됩니다.

희망 사항은 문제에 대한 또 다른 관점을 제공합니다. 더 자세히 논의하고 싶다면 그냥 찍으십시오.

+0

코드가 아니라 설명의 원인으로 인해 유효성이 검사되었습니다. 실제로 필요한 것은 임의의 데이터를 전달하는 POST 데이터입니다. – Benj

관련 문제