PaginateViewHelper перенаправить на страницу запроса
Я использую TYPO3\Fluid\ViewHelpers\PaginateViewHelper
в моем действии индекса, который перечисляет некоторые элементы. Каждый элемент имеет действия, которые выполняются на лету, поэтому после вызова и обработки действия он возвращается к действию index.
public function deleteAction(Item $item) {
$this->itemService->remove($item);
$this->redirect('index');
}
К сожалению, в этом случае меня перенаправляют на первую страницу индекса. Есть ли возможность перенаправить на страницу, где я запускаю действие удаления? Могу ли я также получить аргументы подзапроса, отправленные на PaginateController
?
Я знаю, что вместо этого могу использовать вызов AJAX или написать свою собственную нумерацию страниц, но я бы хотел использовать существующее решение, если это возможно.
2 ответа
Вы можете сделать что-то вроде этого
$referringRequest = $this->request->getReferringRequest();
if ($referringRequest !== null) {
$this->redirectToRequest($referringRequest);
}
Это работает только в том случае, если ссылающийся запрос отправляется с исходным запросом, как в случае с текучими формами, которые следует использовать для небезопасных запросов (POST, PUT, DELETE).
Чтобы сохранить параметры GET, вы можете использовать addQueryString="1" в LinkViewHelper... возможно, этого уже достаточно, чтобы сохранить текущую страницу при использовании redirect() в контроллере.
В противном случае вы можете использовать UriBuilder контроллера, чтобы сгенерировать URI, включающий нужную страницу в пагинации и другие параметры, а затем использовать функцию redirectToUri(), чтобы перенаправить пользователя на нужный URI.