Может ли Symfony просто перезагрузить страницу?
У меня есть приложение, которое получает запрос от другого приложения. Он обнаруживает значение в строке запроса, сравнивает это значение с кэшированным значением и, если они не совпадают, ему необходимо очистить свой кэш и перезагрузить страницу (создать новый кэш). К сожалению, я не могу найти способ заставить Symfony перенаправить на текущую страницу в том же формате (протокол, путь URI, строка запроса и т. Д.). Что мне не хватает? Это все происходит в фильтре на isFirstCall()
,
Благодарю.
2 ответа
Решение
Мы сделали это в фильтре.
Это немного странно, но вот пример выполнения перенаправления в фильтре... вам придется самостоятельно проверять кеш...
class invalidateCacheFilter extends sfFilter {
public function execute($filterChain) {
$redirect=true;
if($redirect===true)
{
$request = $this->getContext()->getRequest();
/**
This is the hacky bit. I am pretty sure we can do this in the request object,
but we needed to get it done quickly and this is exactly what needed to happen.
*/
header("location: ".$request->getUri());
exit();
}
$filterChain->execute();
}
}
Если вы хотите перенаправить, вы можете сделать так:
if (true===$redirect)
{
return $this->getContext()->getController()->redirect($request->getUri());
}