Laravel 5.6 - 未捕获的RuntimeException:尚未设置外观根

时间:2018-04-13 13:23:33

标签: laravel laravel-5

当我尝试在班级中使用 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',
        ];
    }

}

我在这里做错了什么?

5 个答案:

答案 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。