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.

https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_mvc_1_1_web_1_1_routing_1_1_uri_builder.html

Другие вопросы по тегам