Вы также можете использовать фильтры для выполнения кода после выполнения:
class myFilter extends sfFilter {
public function execute($filterChain) {
// Code that is executed before the action is executed
$filterChain->execute();
// Code that is executed after the action has been executed
}
}
Это потому, что полное выполнение в Symfony представляет собой одну большую «цепочку фильтров» ... Если вы внимательно посмотрите на filters.yml
, вы увидите, что сначала вызывается фильтр rendering
, а затем security
фильтр, фильтр cache
и, наконец, фильтр execution
.
Фильтр выполнения - это фильтр, который фактически выполняет запрос (вызывает контроллер и все остальное).
Чтобы проиллюстрировать это: фильтр кэша, прежде чем идти по цепочке, проверит, доступен ли в кэше действительный вывод, и вернет его. Если сейчас он выполнит следующий фильтр в цепочке, а когда вернется, сохраните выходные данные, чтобы последующие запросы могли использовать кеш.