Я создаю приложение Laravel, и все работает отлично (насколько я вижу), и теперь я хотел бы сделать сайт общедоступным.
Однако я не могу понять, как реализовать пользовательские сообщения для плохих/неавторизованных запросов.
Я знаю, что могу помещать представления в /resources/views/errors/folder, например:
404.blade.php
503.blade.php
... и так далее.
Однако я не уверен, для каких ошибок следует создавать представления или есть более простой способ сделать один основной вид для всех ошибок. Нет причин уведомлять пользователя о том, какая ошибка произошла, но если это можно сделать легко, я бы пошел таким путем.
Вот список всех ошибок, которые я только что просмотрел в Google: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Вот документация по ошибкам Laravel 5.1: http://laravel.com/docs/5.1/errors
Я попытался изменить файл /app/Exceptions/Handler.php и в нем функция
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
return parent::render($request, $e);
}
в
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
return view('errors.allerrors'); // only this line is changed
}
но это возвращает только пустую страницу.
Благодарю.
Я оставлю это как частичный ответ, если кто-то окажется здесь с той же проблемой.
Ответ не будет перенаправлять все ошибки на одну и ту же страницу, но, насколько я могу судить, справится с большинством ошибок.
Добавьте эти файлы в папку /resources/views/errors/
:
401.blade.php - эта страница будет отображаться, если пользователю не разрешен доступ к веб-странице (когда вы используете какую-либо аутентификацию пользователя)
404.blade.php - эта страница будет отображаться, если пользователь пишет URL-адрес, который вы еще не объявили в файле /app/Http/routes.php
503.blade.php - эта страница будет отображаться, когда ваш сайт не работает, т.е. при запуске команды php artisan down
Есть еще одна страница ошибки, о которой я не знаю, как умереть, лучше сказать, я не знаю ее номер ошибки. Он показывает, когда пользователь пытается получить доступ к экземпляру модели (я не знаю правильную терминологию здесь, поэтому, пожалуйста, исправьте меня), которой не существует. В примере; если пользователь пытается получить доступ к yourwebsite.com/articles/123
но у вас нет статьи с этим id/slug в вашем db, вы все равно получите сообщение whoops...
Я не полностью удовлетворен этим решением, так как могут быть другие ошибки, которые я не смог произвести, но это лучшее/единственное решение, которое у меня есть.
public function render($request, Exception $e) { if ($e instanceof \Illuminate\Session\TokenMismatchException) { return redirect()->back()->withInput()->with('token', csrf_token()); } return parent::render($request, $e); }