繁体   English   中英

错误消息-Laravel 5.2

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM