Создать Redirect с дополнительными параметрами запроса для другого плагина - PullRequest
1 голос
/ 29 мая 2019

Я использую плагин новостей, где я добавляю другой плагин (давайте назовем его «Форма») в качестве CE для подробного представления.

Когда я заполняю форму в подробном представлении и отправляю ее,тогда мой редирект внутри моего контроллера только передает аргументы для моего расширения.

$this->redirect('success');

Но мне бы хотелось, чтобы он также передавал Аргументы для расширений новостей, чтобы я попал в представление «Подробности» новостей, и мой плагин Form получил информацию о других его действиях.из перенаправления.

Но, насколько я вижу, метод перенаправления принимает аргументы только для одного плагина.

У кого-нибудь была идея?

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

В дополнение к ответу @Rudy Gnodde:

У uriBuilder есть опция "addQueryString", равная функции typolink из typoscript.Если этот параметр включен, он присоединяет настроенные строки запроса к URL.Таким образом, вам не нужно обращаться к каждому параметру для каждого расширения:

$uriBuilder = $this->getControllerContext()->getUriBuilder();
$uri = $uriBuilder->reset()
  ->setAddQueryString(true)
  ->setAddQueryStringMethod('GET')
  ->uriFor('success');
$this->redirectToUri($uri);

Для формы ViewHelper f:form вы также должны добавить опцию addQueryString="true"!

0 голосов
/ 29 мая 2019

Функция redirect допускает только аргументы для контроллера / действия, на которое вы перенаправляете.Невозможно добавить другие параметры получения.

Единственный способ сделать это - создать URL-адрес самостоятельно и использовать функцию redirectToUri.Это сделало бы что-то вроде:

$uriBuilder = $this->getControllerContext()->getUriBuilder();
$uri = $uriBuilder->reset()
  ->setTargetPageUid(1)
  ->setArguments($newsArgs) 
  ->uriFor('success');
$this->redirectToUri($uri);
...