2010-03-16 3 views
11

ZF REST URL에서 GET 매개 변수를 추출하려고합니다. 현재 요청이 아니므로 URL을 호출하거나 경로를 실행하고 싶지 않습니다. 매개 변수가 필요합니다. 나는 parse_url()과 같은 유틸리티 함수를 찾고 있지만 Zend REST 형식은 찾고있다. 그 중 하나가 있습니까, 아니면 바퀴를 재발견해야합니까?매개 변수에 대한 Zend URL을 구문 분석하는 방법은 무엇입니까?

새로운 Zend_Controller_Request_Http 생성과 같은 몇 가지 시도를했지만 매개 변수가 채워지지 않습니다. 유효한 HTTP URL입니다.

편집 : 요청에 따라, 샘플 젠드 URL : 그래서 난 그냥이 URL에서 PARAM1 및 PARAM2를 얻기 위해 노력하고

http://localhost/index/index/param1/foo/param2/bar 

.

편집 # 2 : 나는이 시도했지만 작동하지 않는 것 :

$request = new Zend_Controller_Request_Http('http://localhost/home/test/param1/foo/param2/bar'); 
$front = Zend_Controller_Front::getInstance(); 
$route = new Zend_Rest_Route($front); 
var_dump($route->match($request)); 
+0

어떻게 URL을 제공 어떻습니까? – hobodave

답변

8

방법에 대한 $uri = Zend_Uri::factory($yourUrl) '? Zend_Uri을 참조하십시오.

편집 :
아, 이제 무엇을 의미하는지 봅니다. 이 경우 고든이 제안한 것을 시도해야한다고 생각합니다. 경로의 match 방법을 통해 귀하의 URL을 실행하십시오.

$params = $route->match($yourUrl); 

.. 포기해야하는 : 같은 semething 않는 다음

$route = Zend_Controller_Front::getInstance() 
           ->getRouter() 
           ->getRoute('theRouteName'); 

과 :

아마 같은 (확실하지 비록)와 라우터에서 경로를 검색 할 수있는 방법이있다 당신에게 매개 변수의 배열.

+1

저에게 Zend_Uri 객체를 주었지만 그 객체를 매개 변수로 가져 오기 위해 무엇을해야합니까? getQuery()는 표준 쿼리 문자열 (? param1 = foo & param2 = bar) 만 찾기 때문에 false를 반환합니다. – wizzard

+1

굉장합니다. 방금 getRoute ($ name)을 getCurrentRoute()로 변경했으며이 솔루션이 저에게 효과적입니다. 정말 고마워! – wizzard

+0

+1. 여기에서 upvoting, 내 삭제. 이것은 훨씬 더 간단합니다. 사소한 부작용 : match()는 Zend_Controller_Request_Http의 인스턴스가 아니라면 내부적으로 $ yourURL을 현재 요청 객체로 대체합니다. – Gordon

8

사람이, 당신의 routes.ini에 정의 된 경로를 고려 저장된 URL에서 (모듈/컨트롤러/액션 포함) 모든 PARAMS을 얻으려고 여기 온 경우 수행해야합니다

/** 
* Code kept big just for example purposes 
* Creates a request object, route and injects back the properties parsed 
*/ 
$url = 'http://www.site.com/module/controller/action/param1/test'; 
$request = new Zend_Controller_Request_Http($url); 
Zend_Controller_Front::getInstance()->getRouter()->route($request); 

// Module name 
$request->getModuleName(); 

// Controller name 
$request->getControllerName(); 

// Action name 
$request->getActionName(); 

// All parameters 
$request->getParams(); 
관련 문제