У меня есть Silex BootableProvider для проверки некоторых требований по каждому запросу перед выполнением вызовов любой из моих конечных точек. Все работает хорошо, за исключением того, что когда я использую $app->abort('403', 'запрещено по какой-то причине'); в любом месте метода boot() ответ всегда возвращает код 200. Сообщение «запрещено» отображается правильно, и выполнение, к счастью, прерывается, как и ожидалось, но отсутствие значимого кода состояния в ответе затрудняет/затрудняет обработку этих ошибок. ответы.
Я использую силекс 2.0.4.
Однако, если я выполню $app->abort(...) из любой из моих конечных точек, которые реализуют ControllerProviderInterface, в том же потоке запросов, ответы будут иметь правильные коды ответов, которые я указываю в прерывании, поэтому я думаю, что это вопрос времени.
Любые советы очень ценятся.
Образец кода:
class BootProvider implements BootableProviderInterface {
function boot(Application $app) {
$app->abort(403, 'not allowed');
}
}
...
$app->register(new My\Api\BootProvider());
Я пытался передать заголовки, чтобы переопределить статус, но безрезультатно.
Спасибо!