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