Я не могу найти способ отменить действие внутри «Перед промежуточным ПО» и отправить ответ клиенту без выполнения контроллера.Приложение Silex перед промежуточным программным обеспечением отменить маршрут
Например:
$app->before(function(Request $request) {
// Do something here
// ...
// Here sent the response to the client and don't execute the controller
}});
возможно?
Одним из примеров
Этот код работает отлично. Я ищу другое решение, используя встроенные методы framework. Если это невозможно, не проблема.
$app->before(function(Request $request) {
// Do something here
// ...
header('Content-Type: application/json');
echo json_encode(array(
'message' => 'Invalid token'
));
http_response_code(400); // This code return Bad Request to client
exit; // Cancel the rest of the framework
}});
Спасибо за ваш ответ. Но мое намерение отменяет запрос, возвращающий клиенту код состояния 4XX. С помощью этого метода результатом является код состояния 200 с телом, сгенерированным другим контроллером. Возможно, моя идея неверна или подход недействителен. –
, если вы хотите выйти в любой момент и вернуть код 4xx, используйте исключения. Я отредактировал свой ответ. –
Horst Jahns, Спасибо за помощь. Ваше решение идеально подходит для моего подхода. С уважением –