3

URI を持つページがあるとしましょう:

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

他のパラメーターを追加/更新/削除する必要があるため (オフセットと名付けましょう)、最終的には次のようになります。

 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で作業しているため、配列は良くありません

4

1 に答える 1

5

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;
}
于 2014-07-14T20:48:42.777 に答える