2

我正在尝试构建一个查询字符串,如下所示:

<a href="<?= $this->url(array('page' => $this->next)) ?>" class="next">Next Page</a>

我想向查询字符串添加一个数组。例如,array('find_loc'=>'New+York', 'find_name'=>'starbucks')

我希望得到看起来像http://example.com/1/?find_loc=New+York&find_name=starbucks的网址

最好的方法是什么?我发现了一个类似的问题,建议将字符串附加到 url。有查询字符串的助手吗?

4

4 回答 4

1

对您的问题的简单回答是否定的。

以下是班级说明:

/**
 * Helper for making easy links and getting urls that depend on the routes and router
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

帮助建立简单的链接和获取依赖路由路由器的 url

我认为描述的目的很明确。使用它来制作依赖于路由和路由器的 URL。因此,只需按照您在问题中发布的链接中的建议附加您的查询字符串。

于 2011-07-22T18:17:56.407 回答
0

以下内容应该适合您:

<a href="<?= $this->url(array('page' => $this->next, 'find_loc' => 'New York', 'find_name' => 'starbucks')')) ?>" class="next">Next Page</a>

ZF-Router会将值映射到 Request 对象 。

在您的控制器中,您可以使用Response-Object访问这些参数:

$loc  = $this->getRequest()->getParam('find_loc');
$name = $this->getRequest()->getParam('find_name); 
于 2011-07-22T18:16:07.490 回答
0

您可以制作自定义助手:

class My_View_Helper_UrlHttpQuery extends Zend_View_Helper_Abstract
{
    public function urlHttpQuery($query)
    {
        $urlHelper = $this->view->getHelper('url');
        $params = func_get_args();
        array_shift($params);//removing first argument
        $url = call_user_func_array(($urlHelper, 'url'), $params); 
        if(!is_string($query)) { //allow raw query string
            $query = array($query);
            $query = http_build_query($query);
        }
        if(!empty($query) {
            $url .= '?' . ltrim('?', $query);
        }
        return $url;
    }
}

用视图注册这个助手后,你可以像这样使用它<a href="<?=$this->urlHttpQuery(array('find_loc'=>'New+York', 'find_name'=>'starbucks'), array('page' => $this->next), 'routename', $otherUrlHelperParams) ?>" class="next">Next Page</a>

于 2011-07-23T07:04:23.467 回答
0

工作代码

/**
 * Class Wp_View_Helper_UrlHttpQuery
 */
class Wp_View_Helper_UrlHttpQuery extends Zend_View_Helper_Abstract
{
    public function urlHttpQuery($query = array())
    {
        $urlHelper = $this->view->getHelper('url');
        $params = func_get_args();
        //removing first argument
        array_shift($params);
        $url = call_user_func_array(array($urlHelper, 'url'), $params);
        if (is_array($query) || is_object($query)) {
            $query = http_build_query($query);
        }

        if (!empty($query)) {
            $url .= '?' . ltrim($query, '?');
        }
        return $url;
    }

}

因为上游代码不起作用

于 2017-02-09T09:41:18.803 回答