保留uri构建器中的参数

时间:2014-07-14 20:42:18

标签: typo3 extbase typo3-6.1.x realurl uribuilder

假设我有一个带URI的页面:

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

并且需要添加/更新/删除其他一些param(让我们将它命名为 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

1 个答案:

答案 0 :(得分:4)

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 \TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder the current UriBuilder to allow method chaining
 * @api
 * @see TSref/typolink.addQueryString
 */
public function setAddQueryString($addQueryString) {
    $this->addQueryString = (boolean) $addQueryString;
    return $this;
}