我正在尝试通过以下代码将管理员重定向到信息中心页面,但是当我输入/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.
由于无法修复它,我显得如此愚蠢。你能帮我找出问题所在吗?非常感谢你。
答案 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}}