2016-05-26 4 views
0

Есть ли способ захватить представление не найденное исключение (не http-маршрут не найден) в Laravel 5.2 и отобразить пользовательскую ошибку? Я попытался захватить InvalidArgumentException в приложении/Исключения/обработчик и вернуть простое сообщение без везения.Пользовательский вид не найден excpetion в Laravel

Спасибо заранее

+0

Почему не существует исключение какого-либо вида? – Abhishek

+0

У меня есть сайт, который поддерживает несколько языков. например, предположим, что страница команды существует на английской стороне веб-сайта. Но на испанской стороне у меня нет команды. Поскольку сайт динамичен, если у кого-то есть полный URL-адрес маршрута команды, когда он/она использует испанскую версию веб-сайта, он/она получит сообщение об ошибке страницы, потому что он не существует для испанской версии. Поэтому я бы предпочел бы прервать ошибку 404 вместо того, чтобы view не был найден. Маршрут один и тот же, но мнения отдельно для каждого языка –

ответ

0

Вы можете включить это в render метод вашего app\Exception\Handler.php файла:

if($e instanceof InvalidArgumentException) abort(404); 

Не забудьте use InvalidArgumentException; в верхней части класса.

EDIT: Я вижу, что это общее исключение и множество классов, бросающих его. Поэтому, когда какой-либо другой класс бросает это исключение, вы все равно получите 404.

Так просто быстрый хак:

if(($e instanceof InvalidArgumentException) && str_contains($e->getFile(), 'Illuminate/View/FileViewFinder')) abort(404); 

Так что это будет показывать только 404, когда FileViewFinder файл бросает InvalidArgumentException.

P.S Может быть, есть лучшее решение.

+0

Большое спасибо. Вместо использования InvalidArgumentException я использовал ErrorException. Теперь работает ;-) –

Смежные вопросы