2016-08-30 9 views
2

次のコードで管理者をダッシュ​​ボードページにリダイレクトしようとしていますが、/dashboardと入力すると、ブラウザにNotFoundHttpExceptionエラーページが表示されます。

ミドルウェア(AdminCheck.php):
申し訳ありませんが、あなたが探しているページが見つかりませんでした。 laravel

<?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 \ルート\ web.php):

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

dashboard.php:

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

が、私はそれを修正することができないことにより、そのダムようだ:私はhttp://localhost:8000/dashboardを入力すると

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

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

が言う表示されるエラーページがあります。私の問題がどこにあるかを教えてくれますか?事前にありがとうございます。

+1

を私は** ** dashbpardに** ** /ダッシュボードを変更し、今誤差があることをchengedた:UrlGenerator.php線314で 'InvalidArgumentException:ルート[ダッシュボード]定義されていない.' !!! – Tower

答えて

2

は多分それはあなたのコントローラ名から来て、あなたのルートがため/ダッシュボードdashboardクラスのindexメソッドを使用するようにしてください。 LaravelはオートローディングクラスのPSR-4規格に従って、see doc hereは、自分のクラス名は大文字で開始する必要があります:

\ NamespaceName {\ SubNamespaceNames *} \ ClassNameに

あなたdashboard.phpの名前を変更してみてくださいDashboard.phpにphp composer dumpautoloadをリメイクして表示しますか?このルートは、後に動作するはずです:

Route::get('dashboard', '[email protected]')->middleware('auth', 'adminCheck');

0

あなたのresources/viewフォルダにdashboard.blade.phpという名前のビューがありますか?

このエラーは、ブレードテンプレートがない場合に発生します。時には、あなたが名前をつけたときに間違いを犯したこともあります。だから持っているかもしれないdashbord.blade.phpdashboard.blade.php

+1

いいえ。私はそれをチェックし、それは正解です! – Tower

+1

あなたのプロジェクトに対して 'view clear'と' route clear'をしましたか?それはあなたを助けるかもしれません。 – Sachith

1

通常、このような問題が発生した場合、経路のパスURLを定義していません。これはあなたのルートを追加してください:

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

といくつかのヒントを、あなたがエラーを見つけて、何が起こっているか見当がつかない場合、あなたはエラーの詳細のためにlaravel.logファイルに行くことができる、あなたはそれをここで見つけることができます。storage/logs/laravel.log

1

USL

Route::group(['middleware' => ['auth', 'adminCheck']], function() { 
    Route::get('dashboard', dashboard::class . '@index'); 
}); 
関連する問題