【问题标题】:How to parse a Zend URL for parameters?如何解析 Zend URL 的参数?
【发布时间】:2011-01-28 08:22:37
【问题描述】:

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

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    $uri = Zend_Uri::factory( $yourUrl )' 怎么样?见Zend_Uri

    编辑:
    啊,我明白你现在的意思了。在那种情况下,我认为您应该尝试 Gordon 的建议。通过路由的match 方法运行您的网址。

    可能有一种方法可以从路由器中检索路由,例如(但不确定):

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

    然后做类似的事情:

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

    .. 它应该给你一个参数数组。

    【讨论】:

    • 这给了我一个 Zend_Uri 对象,但是我该如何处理该对象来获取参数呢? getQuery() 返回 false,因为它只查找标准查询字符串 (?param1=foo&param2=bar)。
    • 太棒了。我刚刚将 getRoute($name) 更改为 getCurrentRoute() ,这个解决方案对我有用。非常感谢!
    • +1。删除我的,在这里投票。这要简单得多。只是一个小旁注:如果 $yourURL 不是 Zend_Controller_Request_Http 的实例,match() 将在内部用当前请求对象替换它。
    【解决方案2】:

    如果有人来这里尝试从存储的 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();
    

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 2015-05-09
      • 2011-02-04
      相关资源
      最近更新 更多