抱歉,找不到您要查找的页面。 laravel

时间:2016-08-30 21:21:17

标签: laravel redirect middleware

我正在尝试通过以下代码将管理员重定向到信息中心页面,但是当我输入/dashboard时,浏览器会显示NotFoundHttpException错误页面。

中间件(AdminCheck.php):

<?php

namespace App\Http\Middleware;

use Closure;

class AdminCheck
{

    public function handle($request, Closure $next)
    {
        $user = auth()->authenticate();

        if ($user->role !== 'admin')
        {
            return redirect(route('login'));
        }

        return $next($request);
    }
}

Kernel.php(App \ Http \ Kernel.php):

protected $routeMiddleware = [
        ...
        'adminCheck' => \App\Http\Middleware\AdminCheck::class,
    ];

路线(App \ routes \ web.php):

Route::get('dashboard', function (){
    // 
})->middleware('auth', 'adminCheck');

dashboard.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

class dashboard extends Controller
{
    public function index () 
    {
        return view('dashboard');
    }
}

当我输入http://localhost:8000/dashboard时,会显示一个错误页面,上面写着:

Sorry, the page you are looking for could not be found.   

由于无法修复它,我显得如此愚蠢。你能帮我找出问题所在吗?非常感谢你。

4 个答案:

答案 0 :(得分:2)

也许它来自您的控制器名称。 Laravel遵循自动加载类的PSR-4标准see doc here,你的类名应该以大写字母开头:

  

\ NamespaceName {\ SubNamespaceNames *} \类名

尝试将dashboard.php重命名为Dashboard.php,重新制作php composer dumpautoload以查看?此路线应在此之后起作用:

Route::get('dashboard', 'Dashboard@index')->middleware('auth', 'adminCheck');

答案 1 :(得分:1)

通常当你遇到这样的问题时,你还没有在路线中定义你的路径网址。请添加此路线:

Route::resource('dashboard','YourController');

以及一些提示,如果您发现错误并且不知道发生了什么,您可以转到laravel.log文件以获取有关错误的更多详细信息,您可以在此处找到它:{{1} }

答案 2 :(得分:1)

使用index类的dashboard方法为/ dashboard usl

制定路线
Route::group(['middleware' => ['auth', 'adminCheck']], function () {
    Route::get('dashboard', dashboard::class . '@index');
});

答案 3 :(得分:0)

您的resources/view文件夹中是否有名为dashbord.blade.php的视图?

如果没有刀片模板,则会发生此错误。或者有时候,当你说出来时,你可能犯了一个错误。因此它可能dashboard.blade.php而不是{{1}}