我正在尝试从ZF REST URL中提取GET参数。这不是当前的请求,我不想调用URL或执行路由,我只需要参数。我正在寻找像parse_url()这样的实用程序函数,但是对于Zend REST格式。有一个,还是我必须重新发明轮子?
我尝试了一些事情,比如创建一个新的Zend_Controller_Request_Http,但参数没有被填充。它是一个有效的HTTP URL。
编辑:根据请求,Zend URL示例:
http://localhost/index/index/param1/foo/param2/bar
所以我只是试图从这个URL中获取param1和param2。
编辑#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 :(得分:8)
$uri = Zend_Uri::factory( $yourUrl )
怎么样?请参阅Zend_Uri。
修改强>
啊,我明白你的意思了。在那种情况下,我相信你应该尝试戈登的建议。通过您路线的match
方法运行您的网址。
可能有一种方法可以从路由器中检索路由,但不确定(不确定):
$route = Zend_Controller_Front::getInstance()
->getRouter()
->getRoute( 'theRouteName' );
然后做类似的事情:
$params = $route->match( $yourUrl );
..它应该为您提供一系列参数。
答案 1 :(得分:8)
如果有人来到这里尝试从存储的URL获取所有参数(包括模块/控制器/操作),考虑到routes.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();