Laravel 4 обработка 404 ошибок
Я новичок в Laravel, и я пытаюсь поймать любые запросы, которые не соответствуют существующим маршрутам. В настоящее время я получаю ...
Symfony Component HttpKernel Exception NotFoundHttpException
Я создал App::missing()
проводник в app/start/global.php
Как рассказали на странице документации но это не поможет. Я также попытался создать App::error(function(NotFoundHttpException $exception, $code)
обработчик, но это не помогло.
любая помощь будет оценили.
5 ответов
это, вероятно, связано с отладкой, включенной в . Попробуйте превратить это значение в false
и посмотреть, если ваш пользовательский обработчик не обрабатывает" его.
кроме того, ваш обработчик ошибок должен вернуть ответ, чтобы "короткое замыкание" запроса и фактически ответить на результат вашего обработчика ошибок-вы возвращаете класс value / Response из своего App::error()
обработчик? (Пожалуйста, покажите нам этот код).
вот статья о Laravel 4 Обработка Ошибок без очертаний процесса того, как Laravel использует App::missing()
и App::error()
обработчиков при возникновении ошибок.
обратите особое внимание на раздел "мясо класса обработчика" - он описывает, как вам нужно вернуть какое-то значение из обработчика, чтобы он не передавал исключение следующему обработчику (вероятно, ваш вывод ошибки Whoops, который отображается, когда debug
установлено значение true
на app/config/app.php
).
вам нужно это: в ' app / start / global.php ' add:
App::missing(function($exception)
{
return Response::view('errorView', array(), 404);
});
и, конечно, в представлениях создайте (в этом случае) errorView.лезвие.в PHP
EDIT: этот метод обрабатывает все ошибки" 404 Not Found".
вот как вызвать ошибку 404, когда возникает исключение ModelNotFoundException
App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $exception, $code)
{
return Response::view('errors.404', array(), 404);
});
на
app - > config - > app.в PHP
Если вы
'debug' => true,
этой
'debug' => false,
вы получите среду пользовательского интерфейса, отличную от режима отладки. Пожалуйста, убедитесь, что вы проверили это.
спасибо :)
я смог заставить его работать, используя следующий код. Я позволяю 'debug' = > true, в моей локальной конфигурации.
в приложении / пуск / глобальный.в PHP
App::error(function(Symfony\Component\HttpKernel\Exception\NotFoundHttpException $exception)
{
Log::error($exception);
$response = Response::make(View::make('response')
->with('data', null)
->with('meta', 'Error, incorrect path')
->with('pagination', null));
$response->setStatusCode(404);
$response->header('content-type', 'application/json', true);
return $response;
});
Если какой-либо интерес, содержание моего взгляда
<?php
echo json_encode(array(
'data' => $data,
'pagination' => $pagination,
'meta' => $meta), JSON_PRETTY_PRINT);
?>
основной задачей было использовать Symfony\Component\HttpKernel\Exception\NotFoundHttpException в качестве типа исключения, а не только NotFoundHttpException.
С помощью NotFoundHttpException была вызвана ошибка 500.