Я думаю, виджеты для разбивки на страницы написаны не совсем правильно. пагинацию виджет использует виджет LinkViewHelper, который имеет метод getWidgetUri
protected function getWidgetUri()
{
$uriBuilder = $this->controllerContext->getUriBuilder();
$argumentPrefix = $this->controllerContext->getRequest()->getArgumentPrefix();
$arguments = $this->hasArgument('arguments') ? $this->arguments['arguments'] : [];
if ($this->hasArgument('action')) {
$arguments['action'] = $this->arguments['action'];
}
if ($this->hasArgument('format') && $this->arguments['format'] !== '') {
$arguments['format'] = $this->arguments['format'];
}
return $uriBuilder->reset()
->setArguments([$argumentPrefix => $arguments])
->setSection($this->arguments['section'])
->setAddQueryString(true)
->setAddQueryStringMethod($this->arguments['addQueryStringMethod'])
->setArgumentsToBeExcludedFromQueryString([$argumentPrefix, 'cHash'])
->setFormat($this->arguments['format'])
->build();
}
setAddQueryString (правда) говорит, чтобы добавить все GET-параметр для каждого постраничной URL И это не представляется возможным установить addQueryString ложь, или сказать , что необходимо добавить только определенные параметры. В моем случае, это StartDate и ENDDATE
Я решил эту проблему с помощью XCLASS и getWidgetUri выглядит следующим образом:
protected function getWidgetUri()
{
$uriBuilder = $this->controllerContext->getUriBuilder();
$argumentPrefix = $this->controllerContext->getRequest()->getArgumentPrefix();
$arguments = $this->hasArgument('arguments') ? $this->arguments['arguments'] : [];
if ($this->hasArgument('action')) {
$arguments['action'] = $this->arguments['action'];
}
if ($this->hasArgument('format') && $this->arguments['format'] !== '') {
$arguments['format'] = $this->arguments['format'];
}
$startdate = GeneralUtility::_GET('startdate');
$enddate = GeneralUtility::_GET('enddate');
$allowedParams = array();
if ($startdate != NULL) {
$allowedParams['startdate'] = $startdate;
}
if ($enddate != NULL) {
$allowedParams['enddate'] = $enddate;
}
return $uriBuilder->reset()
->setArguments([$argumentPrefix => $arguments, $allowedParams])
->setSection($this->arguments['section'])
->setAddQueryString(false)
->setAddQueryStringMethod($this->arguments['addQueryStringMethod'])
->setArgumentsToBeExcludedFromQueryString([$argumentPrefix, 'cHash', 'type'])
->setFormat($this->arguments['format'])
->setUseCacheHash(false)
->build();
}
Вы нашли решение вашей проблемы? –
Я бы сказал, да и нет. Прочтите мои комментарии об этом, пожалуйста. Разработчик realurl Дмитрий Дулепов сказал мне, что realurl способен контролировать, насколько велик БД и безопасен от наводнения. – olek07