Я считаю, несмотря на это, вы должны получить ответ 404, так что может быть еще что-то происходит, что это результат кода не включен в вашем вопросе.
Этот класс исключений, который выбрасывается для 404, равен NotFoundHttpException
, а не NotFoundException
.
Поскольку Laravel 4 использует HttpKernal Symfony, это исключение составляет here.
Вы можете видеть here, где App::abort()
выбрасывает NotFoundHttpException
при срабатывании 404.
Таким образом, ваш код должен выглядеть следующим образом:
// NotFoundHttpException handler
App::error(function(\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e)
{
$default_message = 'The requested resource was not found';
return Response::json(array(
'error' => $e->getMessage() ?: $default_message,
), 404);
});
Важен: Это будет только огнь на 404 статусов, так как это соответствующий код NotFoundHttpException. Другие коды статуса возвращают другие классы исключений. Для того, чтобы захватить все HTTP коды ошибок состояния исключения, типа намек на HttpException так:
// HttpException handler
App::error(function(\Symfony\Component\HttpKernel\Exception\HttpException $e)
{
return Response::json(array(
'error' => $e->getMessage(),
), $e-> getStatusCode());
});
Наконец, рассмотрим using a bit of Content Negotiation when deciding to return JSON or HTML.
Получаете ли вы сообщение json, указывающее, что эта ошибка действительно срабатывает? –
yes Я получаю сообщение об ошибке в формате JSON. Я прерываю код состояния из ответа и отображаю сообщения в представлении –
. Это больше похоже на отчет об ошибке, который должен быть подан в [GitHub] (http://github.com/laravel/framework/issues). Вы, конечно, не задавали никаких вопросов! –