Как анализировать URL-адрес Zend для параметров?
Я пытаюсь извлечь параметры GET из URL-адреса ZF REST. Это не текущий запрос, и я не хочу вызывать URL-адрес или выполнять маршрут, мне просто нужны параметры. Я ищу функцию полезности, такую как parse_url(), но для формата Zend REST. Есть ли это, или мне нужно изобретать велосипед?
Я пробовал несколько вещей, таких как создание нового Zend_Controller_Request_Http, но параметры не заполняются. Это допустимый URL-адрес HTTP.
Изменить: по запросу образец URL-адреса Zend:
http://localhost/index/index/param1/foo/param2/bar
Поэтому я просто пытаюсь получить param1 и param2 из этого URL.
Изменить # 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));
Ответы
Ответ 1
Как насчет $uri = Zend_Uri::factory( $yourUrl )
'? См. Zend_Uri.
Edit:
Ах, я понимаю, что вы имеете в виду сейчас. В этом случае я считаю, что вы должны попробовать то, что предложил Гордон. Запустите свой URL-адрес с помощью метода match
вашего маршрута.
Вероятно, есть способ получить маршрут от маршрутизатора с чем-то вроде (не уверен, хотя):
$route = Zend_Controller_Front::getInstance()
->getRouter()
->getRoute( 'theRouteName' );
И затем сделайте следующее:
$params = $route->match( $yourUrl );
.., который должен дать вам массив параметров.
Ответ 2
Если кто-то пришел сюда, пытаясь получить все параметры (включая модуль/контроллер/действие) из сохраненного URL-адреса с учетом маршрутов, определенных на вашем маршруте .ini, вы должны:
/**
* 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();