diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Link/PageViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Link/PageViewHelper.php index a38b767b02a53a50db34f3e04bbdbbc5b809c5e3..4ff18fab00cbc9642db05cc20dcf73936740b1da 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Link/PageViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Link/PageViewHelper.php @@ -24,6 +24,7 @@ use TYPO3\CMS\Backend\Routing\UriBuilder as BackendUriBuilder; use TYPO3\CMS\Core\Http\ApplicationType; use TYPO3\CMS\Core\Utility\ArrayUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Core\Utility\HttpUtility; use TYPO3\CMS\Core\Utility\MathUtility; use TYPO3\CMS\Extbase\Mvc\RequestInterface as ExtbaseRequestInterface; use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder as ExtbaseUriBuilder; @@ -166,7 +167,7 @@ final class PageViewHelper extends AbstractTagBasedViewHelper $typolinkConfiguration['linkAccessRestrictedPages'] = 1; } if ($additionalParams) { - $typolinkConfiguration['additionalParams'] = $additionalParams; + $typolinkConfiguration['additionalParams'] = HttpUtility::buildQueryString($additionalParams, '&'); } if ($absolute) { $typolinkConfiguration['forceAbsoluteUrl'] = true; diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php index f4736d1a67a4c4532f4150f863b06bf568a2e93b..15e3e631bf9bda09c017592f43814ad15f55e97b 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php @@ -24,6 +24,7 @@ use TYPO3\CMS\Backend\Routing\UriBuilder as BackendUriBuilder; use TYPO3\CMS\Core\Http\ApplicationType; use TYPO3\CMS\Core\Utility\ArrayUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Core\Utility\HttpUtility; use TYPO3\CMS\Core\Utility\MathUtility; use TYPO3\CMS\Extbase\Mvc\RequestInterface as ExtbaseRequestInterface; use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder as ExtbaseUriBuilder; @@ -189,7 +190,7 @@ final class PageViewHelper extends AbstractViewHelper $typolinkConfiguration['linkAccessRestrictedPages'] = 1; } if ($additionalParams) { - $typolinkConfiguration['additionalParams'] = $additionalParams; + $typolinkConfiguration['additionalParams'] = HttpUtility::buildQueryString($additionalParams, '&'); } if ($absolute) { $typolinkConfiguration['forceAbsoluteUrl'] = true; diff --git a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php index 8cb4fbffc5a7faaebd6cabb6702ad89d3202297a..689040e2ab5afcedd408d01cfd78a24c66b3473e 100644 --- a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Link/PageViewHelperTest.php @@ -201,6 +201,14 @@ class PageViewHelperTest extends FunctionalTestCase '<f:link.page pageUid="3">linkMe</f:link.page>', '<a href="/dummy-1-2/dummy-1-2-3">linkMe</a>', ], + 'additional parameters one level' => [ + '<f:link.page pageUid="3" additionalParams="{tx_examples_haiku: \'foo\'}">haiku title</f:link.page>', + '<a href="/dummy-1-2/dummy-1-2-3?tx_examples_haiku=foo&cHash=3ed8716f46e97ba37335fa4b28ce2d8a">haiku title</a>', + ], + 'additional parameters two levels' => [ + '<f:link.page pageUid="3" additionalParams="{tx_examples_haiku: {action: \'show\', haiku: 42}}">haiku title</f:link.page>', + '<a href="/dummy-1-2/dummy-1-2-3?tx_examples_haiku%5Baction%5D=show&tx_examples_haiku%5Bhaiku%5D=42&cHash=1e0eb1e54d6bacf0138a50107c6ae29a">haiku title</a>', + ], ]; } diff --git a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php index 4897213b28f9b1fa16e32f17ad3754d26513cfda..832603e22af22947d86408d74c001736189a28ce 100644 --- a/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Functional/ViewHelpers/Uri/PageViewHelperTest.php @@ -201,6 +201,14 @@ class PageViewHelperTest extends FunctionalTestCase '<f:uri.page pageUid="3" />', '/dummy-1-2/dummy-1-2-3', ], + 'additional parameters one level' => [ + '<f:uri.page pageUid="3" additionalParams="{tx_examples_haiku: \'foo\'}">haiku title</f:uri.page>', + '/dummy-1-2/dummy-1-2-3?tx_examples_haiku=foo&cHash=3ed8716f46e97ba37335fa4b28ce2d8a', + ], + 'additional parameters two levels' => [ + '<f:uri.page pageUid="3" additionalParams="{tx_examples_haiku: {action: \'show\', haiku: 42}}">haiku title</f:uri.page>', + '/dummy-1-2/dummy-1-2-3?tx_examples_haiku%5Baction%5D=show&tx_examples_haiku%5Bhaiku%5D=42&cHash=1e0eb1e54d6bacf0138a50107c6ae29a', + ], ]; }