Classes/ViewHelpers/Pagination/UriViewHelper.php
<?php
declare(strict_types=1);
namespace Pluswerk\MailLogger\ViewHelpers\Pagination;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
use TYPO3\CMS\Extbase\Service\ExtensionService;
use TYPO3\CMS\Fluid\Core\Rendering\RenderingContext;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
class UriViewHelper extends AbstractTagBasedViewHelper
{
public function __construct(private readonly UriBuilder $uriBuilder)
{
parent::__construct();
}
/**
* Initialize arguments
*/
public function initializeArguments(): void
{
parent::initializeArguments();
$this->registerArgument('name', 'string', 'identifier important if more widgets on same page', false, 'widget');
$this->registerArgument('arguments', 'array', 'Arguments', false, []);
}
/**
* Build an uri to current action with &tx_ext_plugin[currentPage]=2
*
* @return string The rendered uri
*/
public function render(): string
{
$pluginNamespace = 'tx_maillogger_iocenter';
$argumentPrefix = $pluginNamespace . '[' . $this->arguments['name'] . ']';
$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 $this->uriBuilder->reset()
->setArguments([$argumentPrefix => $arguments])
->setAddQueryString(true)
->setArgumentsToBeExcludedFromQueryString([$argumentPrefix, 'cHash'])
->build();
}
}