从config/mail.php内部访问larvel-Acess config()
我有一个表,我存储我所有的配置 服务提供者:从config/mail.php内部访问larvel-Acess config(),php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,我有一个表,我存储我所有的配置 服务提供者: class SettingsServiceProvider extends ServiceProvider { public function boot(Factory $cache, SettingRepository $settings) { if(Schema::hasTable('settings')){ $settings = $cache->remember('settings
class SettingsServiceProvider extends ServiceProvider
{
public function boot(Factory $cache, SettingRepository $settings)
{
if(Schema::hasTable('settings')){
$settings = $cache->remember('settings', 60, function() use ($settings)
{
return $settings->lists();
});
config()->set('settings', $settings);
}
}
public function register()
{
$this->app->bind(
\App\Repositories\SettingRepository::class
);
}
}
服务存储库:
class SettingRepository{
private $settings;
public function __construct(Setting $settings)
{
$this->settings = $settings;
}
public function update($key, $value = null)
{
if (is_array($key))
{
foreach ($key as $name => $value)
{
$this->update($name, $value);
}
return;
}
$setting = $this->settings->firstOrCreate(['name' => $key]);
$setting->value = $value;
$setting->save();
}
public function lists()
{
return $this->settings->lists('value', 'name')->all();
}
}
但是,当我尝试在config/mail.php文件中使用config()
时,返回一个空值
我能做什么?看不到您在哪里调用
config()
,也看不到在config/mail.php中我只能猜测。。但是您应该能够在config/mail.php中使用config()
你打什么电话?如果您使用dd(config());在config/mail.php的顶部,您可以看到所有配置变量。如果它返回一个null
值,那是因为该配置值不存在
您可能还需要一个config/settings.php,它正在加载到服务提供商的register()
方法中
public function register()
{
config([
'config/myfile.php',
]);
}
请参阅:这里的问题是在加载服务提供商之前加载配置文件 您可以改为使用数据库中的“完整”键(表中的名称)保存您的设置,例如
mail.from.address
,并覆盖它们
//从SettingsRepository->List()返回的示例数据
$settigs=[
//您可能要覆盖的邮件配置
'mail.from.address'=>'约翰。doe@example.com',
'mail.from.name'=>'John Doe',
//其他设置
'settings.something'=>'foo',
'settings.else'=>'bar',
];
config()->set($settings);