我正在尝试构建一个查询字符串,如下所示:
<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
的网址最好的方法是什么?我找到了similar question建议将字符串附加到网址。是否有查询字符串的帮助器?
答案 0 :(得分: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。因此,只需将您的查询字符串作为建议添加到您在问题中发布的链接中。
答案 1 :(得分: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);
答案 2 :(得分: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>
答案 3 :(得分: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;
}
}
因为上游代码不起作用