Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.7:尚未设置门面根目录_Php_Laravel - Fatal编程技术网

Php Laravel 5.7:尚未设置门面根目录

Php Laravel 5.7:尚未设置门面根目录,php,laravel,Php,Laravel,我正在尝试从数据库获取站点范围的全局设置,并在控制器中使用这些设置 为此,我在config目录下创建了一个自定义的global.php文件。 定义的键=>值对。 尝试使用DB::table(…)facade获取值 但它返回以下错误: 尚未设置门面根目录 我无法超越这一点 config.php文件如下: use Illuminate\Support\Facades\DB; return [ 'image_resize' => DB::table('settings')->

我正在尝试从数据库获取站点范围的全局设置,并在控制器中使用这些设置

为此,我在config目录下创建了一个自定义的global.php文件。
定义的键=>值对。
尝试使用DB::table(…)facade获取值

但它返回以下错误:

尚未设置门面根目录

我无法超越这一点

config.php文件如下:

use Illuminate\Support\Facades\DB;

return [ 

    'image_resize' => DB::table('settings')->where('id', 1)->value('image_resize'),
    'popup' => DB::table('settings')->where('id', 1)->value('popup'),
    'site_on' => DB::table('settings')->where('id', 1)->value('site_on')

];
你可以用它

use Illuminate\Support\Facades\Config;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        Config::set('global', [
            'image_resize' => DB::table('settings')->where('id', 1)->value('image_resize'),
            'popup' => DB::table('settings')->where('id', 1)->value('popup'),
            'site_on' => DB::table('settings')->where('id', 1)->value('site_on')
        ]);
    }
然后在控制器中,您可以使用
config('global.site\u on')

您还可以使用一个查询,而不是三个查询

public function register()
{
    $setting = DB::table('settings')
        ->where('id', 1)
        ->first(['popup', 'image_resize', 'site_on']);
    Config::set('global', [
        'image_resize' => $setting->image_resize,
        'popup' => $setting->popup,
        'site_on' => $setting->site_on
    ]);
}
或者更简短地说,代码是

public function register()
{
    $setting = DB::table('settings')
        ->where('id', 1)
        ->first(['popup', 'image_resize', 'site_on']);
    Config::set('global', get_object_vars($setting));
}

我在处理app/config.php文件时遇到了这个问题。我添加了一些选项,不小心在它后面放了一个分号而不是逗号。 我有:

'vapid_public_key'=>env('vapid_public_key');env(“乏味的私钥”),

将其更改为正确的逗号,一切正常。

为什么不使用.env文件?您是否启用了
app.php
文件中的facades?@Adam:因为我想用我的控制面板重写这些设置。@kuh chan:是的,我在项目的其他几个控制器中使用DB facade。发生此错误的原因是在laravel中注册了配置,然后是FacadesThanks吊柱,我已经尝试过了,但它给出了一个错误:“Class'App\Providers\Config'notfound”添加
use-light\Support\Facades\Config见更新answer@megavolkan你试过了吗?是的,我试过了,而且效果很好。除了短代码不起作用。它抛出一个错误,说明“常量”设置“未在get\u object\u vars(设置)方法”中定义”。我已经使用了长版本,它的工作。谢谢@Davit.Try
此配置::set('global',get_object_vars($setting))必须是
$设置
我忘记了
$
'vapid_public_key'   => env('VAPID_PUBLIC_KEY'); <--- offending semi-colon
'vapid_private_key'  => env('VAPID_PRIVATE_KEY'),