Возвращение методом либо Response либо, что то иное это тоже кривой подход. Почему бы не подписаться на событие kernel.request, которое происходит до выполнения экшена в контроллере. И проверять входные данные, в случае если они не устраивают возвращать Response и тогда контроллер не будет вызываться.