未定义的索引:路径,在 laravel 5.8 中添加新的自定义服务提供商时
Undefined index: path, when adding new custom service provider in laravel 5.8
我想添加新的自定义服务提供商来设置 session_lifetime。它的价值,我是从数据库中得到的。为此,我创建了服务提供商。但是在服务商注册之后。我得到了这样的错误:Undefined index: path
.
这是我的新服务提供商代码:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Config;
use Illuminate\Support\Facades\DB;
class ParameterSettingServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
}
/**
* Register services.
*
* @return void
*/
public function register()
{
if (\Schema::hasTable('parameter_settings')) {
$settings = DB::table('parameter_settings')->first();
if ($settings) //checking if table is not empty
{
$config = array(
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', $settings->session_expired),
'expire_on_close' => true,
);
Config::set('session', $config);
}
}
}
}
这是我config/app.php
注册服务提供商:
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\ParameterSettingServiceProvider::class,
如何解决这个错误?
您应该使用服务提供商的 boot
方法而不是 register
方法。在所有其他服务提供者的 register
方法具有 运行.
之后,提供者的 boot
方法将 运行
如果您只想设置 1 个配置值,您可以这样做。您不需要覆盖整个 session
配置密钥(其中包含 15 个变量,请检查您的 config/session.php
文件)。这就是为什么您会不断收到有关未定义索引的错误的原因,因为这些配置变量需要存在。
在 运行 时间设置配置值的文档示例是如何按名称设置单个键(使用 "dot" 语法):
Config::set('session.lifetime', $settings->session_expired);
Laravel 5.8 Docs - Configuration - Accessing Configuration Values
我想添加新的自定义服务提供商来设置 session_lifetime。它的价值,我是从数据库中得到的。为此,我创建了服务提供商。但是在服务商注册之后。我得到了这样的错误:Undefined index: path
.
这是我的新服务提供商代码:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Config;
use Illuminate\Support\Facades\DB;
class ParameterSettingServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
}
/**
* Register services.
*
* @return void
*/
public function register()
{
if (\Schema::hasTable('parameter_settings')) {
$settings = DB::table('parameter_settings')->first();
if ($settings) //checking if table is not empty
{
$config = array(
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', $settings->session_expired),
'expire_on_close' => true,
);
Config::set('session', $config);
}
}
}
}
这是我config/app.php
注册服务提供商:
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\ParameterSettingServiceProvider::class,
如何解决这个错误?
您应该使用服务提供商的 boot
方法而不是 register
方法。在所有其他服务提供者的 register
方法具有 运行.
boot
方法将 运行
如果您只想设置 1 个配置值,您可以这样做。您不需要覆盖整个 session
配置密钥(其中包含 15 个变量,请检查您的 config/session.php
文件)。这就是为什么您会不断收到有关未定义索引的错误的原因,因为这些配置变量需要存在。
在 运行 时间设置配置值的文档示例是如何按名称设置单个键(使用 "dot" 语法):
Config::set('session.lifetime', $settings->session_expired);
Laravel 5.8 Docs - Configuration - Accessing Configuration Values