2016-03-29 2 views
1

内から、私は、私はすべての私のconfigsを保存するテーブルを持っている...Laravel - アセスの設定()のconfig/mail.php

サービスプロバイダ:

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()を使用しようとすると、null値が返されます。

私は何ができますか?

答えて

0

あなたがconfig()を呼び出して、どのように設定/ mail.phpに私は..推測することができますが、あなたは何を呼び出しているのconfig/mail.phpに

config()を使用することができるはずだどこを見なければ?あなたがdd(config()); config/mail.phpの一番上には、すべての設定変数が表示されます。 nullの値が返された場合は、その値が存在しないためです。

あなたのサービスプロバイダのregister()メソッドにロードされているconfig/settings.phpが必要な場合もありますか?

public function register() 
{ 
    config([ 
     'config/myfile.php', 
    ]); 
} 

参照:https://laracasts.com/discuss/channels/general-discussion/ho-to-access-config-variables-in-laravel-5/replies/25075

1

ここでの問題は、あなたのServiceProviderがロードされる前に、設定ファイルがロードされているということです。

代わりに、データベースに「フル」キー(テーブルの名前)を使用して設定を保存することができます。 mail.from.addressと上書きします。

// Example data returned from SettingsRepository->lists() 
$settigs = [ 
    // Mail config you might want to overwrite 
    'mail.from.address' => '[email protected]', 
    'mail.from.name' => 'John Doe', 

    // Other settings 
    'settings.something' => 'foo', 
    'settings.else' => 'bar', 
]; 

config()->set($settings);