如何解析参数的Zend URL?

时间:2010-03-16 22:11:23

标签: php zend-framework

我正在尝试从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));

2 个答案:

答案 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();