[英]Error Messages - Laravel 5.2
有人可以告诉我如何使我的“找不到页面”或其他消息吗? 例如,如果有人在浏览器中写了一个我的项目中不存在的链接,而不是显示标准错误页面(糟糕,出现问题,未找到[bla.bla]),而是显示了我指定的页面?
<?php
Route::get('sendemail', 'EmailController@sendEmail');
Route::get('test', 'AuthController@getTest');
Route::get('napravisiadmin', 'ClassbookController@getIndex');
Route::group(['middleware' => ['web']], function () {
Route::group(['middleware' => ['guest']
], function () {
Route::get('login', 'AuthController@getLogin');
Route::post('login', 'AuthController@postLogin');
});
Route::get('logout', 'AuthController@getLogout');
//Admin
Route::group(['middleware' => ['auth', 'auth.admin']
], function () {
Route::group([
'prefix' => 'admin',
'namespace' => 'Admin'
], function () {
Route::controller('student', 'StudentsController');
Route::controller('profile', 'ProfilesController');
Route::controller('class', 'ClassesController');
Route::controller('subjects', 'SubjectsController');
Route::controller('teacher', 'TeachersController');
Route::controller('marktype', 'MarkTypeController');
Route::controller('rules', 'RuleController');
Route::get('{slug?}', 'PageController@getView');
});
});
//Admin
//Student
Route::group([
'middleware' => ['auth', 'auth.student'],
'prefix' => 'stu',
'namespace' => 'Stu'
], function () {
Route::get('{slug?}', 'StuController@getView');
});
//Student
//Teacher
Route::group([
'middleware' => ['auth', 'auth.teacher'],
'prefix' => 'educator',
'namespace' => 'Educator'
], function () {
Route::get('edit/{id}', 'AccountController@getEdit');
Route::post('edit/{id}', 'AccountController@saveEdit');
Route::get('account', 'AccountController@getView');
Route::get('class-subject', 'AccountController@getClassSubject');
Route::get('add-mark', 'AccountController@getAddMark');
Route::post('mark', 'AccountController@postAddMark');
Route::get('added', 'AccountController@marksList');
Route::get('statistics', 'AccountController@marksInTable');
Route::get('personalemails', 'PersonalEmailController@getView');
Route::post('personalemails', 'PersonalEmailController@personalEmail');
});
//Teacher
});
Route::get('{slug?}', 'PageController@getView');
对于“找不到页面” 404错误,请在resources/views/errors/404.blade.php
创建一个视图,当您收到404错误时它将显示。
从文档中:
自定义HTTP错误页面
Laravel使返回各种HTTP状态代码的自定义错误页面变得容易。 例如,如果您希望为404 HTTP状态代码自定义错误页面,请创建一个resources / views / errors / 404.blade.php。 该文件将在您的应用程序生成的所有404错误中提供。
该目录中的视图应命名为与它们对应的HTTP状态代码匹配。
https://laravel.com/docs/5.2/errors#custom-http-error-pages
您始终可以利用异常处理程序,通过自定义render()
方法以所需的方式处理异常,从而走得更远
https://laravel.com/docs/5.2/errors#the-exception-handler
例如,如果您要处理找不到文件的错误,则Exceptions\\Handler.php
public function render($request, Exception $e)
{
if ($e instanceof \Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException) {
return response()->view('errors/exceptions/file-not-found', [], 500);
}
return parent::render($request, $e);
}
您可以创建自定义错误404页面 。 如果有人在浏览器中输入错误的URL,他将看到该页面。
另外,您可以使用以下命令手动将用户重定向到此页面:
abort(404);
更新资料
我猜问题出在这里:
Route::get('{slug?}', 'PageController@getView');
您使用了3次,请尝试将其全部删除。
问题是当Laravel找不到任何路由时,它需要{slug}
并将其传递给PageController
,因此,当您输入http://example.com/sometext
,您将使用slug = sometext
转移到PageController
。
如果你不想删除,请查看slug
控制器内,如果蛞蝓手段东西-好的。 如果没有,则abort(404);
否则, abort(404);
用户将被转移到错误页面。
另外,如果你在更高,去掉5.2.27 web
从中间件routes.php
(它会自动适用,并手动应用会导致错误和strage行为)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.