【问题标题】:Error Messages - Laravel 5.2错误消息 - Laravel 5.2
【发布时间】:2016-05-04 10:29:06
【问题描述】:

谁能告诉我如何让我的“找不到页面”或其他消息?例如,如果有人在我的项目中不存在的浏览器中编写了一个链接,而不是显示标准错误页面(Woops,出了点问题,未找到查看 [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');

【问题讨论】:

  • 查看here 了解有关如何处理错误的更多信息

标签: php laravel


【解决方案1】:

对于“找不到页面”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);
}

【讨论】:

    【解决方案2】:

    您可以create custom error 404 page。如果有人在浏览器中输入错误的 URL,他会看到该页面。

    此外,您可以手动将用户重定向到此页面:

    abort(404);
    

    更新

    我猜问题出在这里:

    Route::get('{slug?}', 'PageController@getView');
    

    你已经用了 3 次了,试着把它们都去掉。

    问题是,当 Laravel 没有找到任何路由时,它会将{slug} 传递给PageController,所以当你输入http://example.com/sometext 时,你会被转移到PageControllerslug = sometext .

    如果您不想删除它,请检查控制器内的 slug 以及 slug 是否意味着什么 - 很好。如果没有,只需abort(404);,用户将被转移到错误页面。

    此外,如果您使用的是 5.2.27 或更高版本,请从 routes.php 中删除 web 中间件(它会自动应用,手动应用可能会导致错误和意外行为)。

    【讨论】:

    • 我正在创建该视图,但是当我输入错误的 url 时仍然看不到我创建的视图。 :(
    • 您添加了resources/views/errors/404.blade.php 视图吗?如果输入了,您尝试输入的具体网址是什么?您看到的具体内容是什么?
    • 是的,我确实用那个名字添加了它。
    • 并在compiled.php第14014行获得InvalidArgumentException:未找到查看[pages.somerandomtext]。
    • @haakym,我已经在这里回答了你(用代码更新了我的回答):stackoverflow.com/questions/36784253/… - 你可以下载 5.2.27 和 5.2.24 版本并比较 RouteServiceProvider.phproutes.php两个档案中的文件。
    猜你喜欢
    • 2016-09-29
    • 2017-11-03
    • 2016-04-17
    • 2018-01-11
    • 2016-07-15
    • 2016-07-12
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多