在uri生成器中保留参数



假设我有一个URI为

的页面
 http://mydomain.loc/index.php?id=123&by=name&dir=desc

并且需要添加/更新/删除一些其他参数(让我们将其命名为offset),所以最终它将是:

 http://mydomain.loc/index.php?id=123&by=name&dir=desc&offset=321

不幸的是,当与uriBuilder建立新的链接时,像这样

$uriBuilder = $this->uriBuilder;
$uri = $uriBuilder->setArguments(array('offset' => 321))->build();

我只得到index.php?id=123&offset=321(没有bydir参数了…)

如何强制uriBuilder保留这些参数?(GeneralUtility::_GP(*)手动重写参数是不可能的,因为它们理论上是未知的)

$_GET数组也不是很好,因为我正在使用RealURL

uriBuilder有一个setAddQueryString方法,这正是你想要的。它将当前查询字符串合并到参数中:

$uri = $this->uriBuilder->setArguments(array('offset' => 321))->setAddQueryString(TRUE)->build();

作为引用,这里是从TYPO3核心中复制的实际类的方法:

/**
 * If set, the current query parameters will be merged with $this->arguments. Defaults to FALSE.
 *
 * @param boolean $addQueryString
 * @return TYPO3CMSExtbaseMvcWebRoutingUriBuilder the current UriBuilder to allow method chaining
 * @api
 * @see TSref/typolink.addQueryString
 */
public function setAddQueryString($addQueryString) {
    $this->addQueryString = (boolean) $addQueryString;
    return $this;
}

相关内容

  • 没有找到相关文章

最新更新