当我尝试在班级中使用 Illuminate \ Http \ Request 时出现以下错误。
错误:
PHP Fatal error: Uncaught RuntimeException: A facade root has not been set. in /home/sasha/Documents/OffProjects/vetnearme/vetnearme/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:218
Stack trace:
#0 /home/sasha/Documents/OffProjects/vetnearme/vetnearme/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(396): Illuminate\Support\Facades\Facade::__callStatic('replaceNamespac...', Array)
#1 /home/sasha/Documents/OffProjects/vetnearme/vetnearme/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(373): Illuminate\Foundation\Exceptions\Handler->registerErrorViewPaths()
#2 /home/sasha/Documents/OffProjects/vetnearme/vetnearme/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(288): Illuminate\Foundation\Exceptions\Handler->renderHttpException(Object(Symfony\Component\HttpKernel\Exception\HttpException))
#3 /home/sasha/Documents/OffProjects/vetnearme/vetnearme/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(187): Illumina in /home/sasha/Documents/OffProjects/vetnearme/vetnearme/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 218
有问题的课程:
namespace App\App\Components;
use Illuminate\Http\Request;
/**
* This class will be used to build menu for admin panel based on the user role
*/
class AdminPanelMenu {
static function menu(Request $request){
$user = $request->user();
if($user->hasRole['super_admin'])
return self::superAdmin();
if($user->hasRole['admin'])
return self::admin();
if($user->hasRole['user'])
return self::user();
return [];
}
private static function superAdmin()
{
return [
'MAIN NAVIGATION',
];
}
private static function admin()
{
return [
'MAIN NAVIGATION',
];
}
private static function user()
{
return [
'MAIN NAVIGATION',
];
}
}
我在这里做错了什么?
答案 0 :(得分:2)
您需要创建一个新的应用容器,然后将其绑定到Facade。
use \Illuminate\Container\Container as Container;
use \Illuminate\Support\Facades\Facade as Facade;
/**
* Setup a new app instance container
*
* @var Illuminate\Container\Container
*/
$app = new Container();
$app->singleton('app', 'Illuminate\Container\Container');
/**
* Set $app as FacadeApplication handler
*/
Facade::setFacadeApplication($app);
在流明中:
自举/ app.php
$app->withFacades();
祝你好运!
答案 1 :(得分:0)
我知道这很老了,但也许会帮助别人。在摆弄我的app / config.php文件后,我遇到了这个问题。我添加了一些选项,并在其后意外地使用了分号而不是逗号。 我有:
'vapid_public_key' => env('VAPID_PUBLIC_KEY'); <--- offending semi-colon
'vapid_private_key' => env('VAPID_PRIVATE_KEY'),
将其更改为适当的逗号,并且一切正常。
答案 2 :(得分:0)
真的很晚,但希望可以帮助别人。我发现解决此错误的最简单方法就是更改出现此错误的页面的路由(即从 /post 到 /posts)。并且不要忘记更改与它有直接链接的任何地方。
答案 3 :(得分:0)
我认为问题在于 Laravel 将范围解析与外观错误混淆。检查您的代码,以确保您没有任何不存在于类中的静态变量。例如,如果您有一个 PHP 类,例如;
<?php
class StaticExample
{
public const EXAM = 'exam';
}
?>
然后您尝试调用不存在的 const StaticExample::EXAMS
。 Laravel 会给你上面的错误,这是没有意义的,因为它很难追踪。日志中没有错误,您就迷路了。
我的解决方案是使用像 PHPStorm 这样的编辑器来指出您的开发错误。另一种方法是你应该很好地检查你的示波器分辨率。
答案 4 :(得分:-1)
我知道这不是最好的答案,但是对我有用。
许可有问题,我对所有laravel项目都进行了777处理,现在可以使用了。
问题出在某些文件或目录上,我需要快速修复,但不能全部设置777。