简体   繁体   中英

Get SiteConfig variables inside _config.php

In SilverStripe 3.4.1 I want to control _config.php file values through the Admin settings. I want to set some variables in Admin > Settings > MyTab and then access these variables in _config.php .

Is there a way to access SiteConfig variables in the _config.php file?

I tried to use several different ways to get the config data:

  • Config::inst()
    • print_r / var_dump gives all the values as an array
  • Config::inst()->get($this->class, 'PropertyName') or $this->config()-> get('PropertyName')
    • Returns empty
  • SiteConfig::current_site_config() or any other similar variations based on the previous two
    • Internal Server Error

The reason I want to do this is I have a plugin that replaces some SilverStripe default action but it requires some data to be inserted. If this data is not inserted it should stay as default.

Here are some resources I have read through to try to find a solution:

The issue is DB::connect is not called at that stage in _config.php . Therefore we cannot retrieve items from the database.

What we can do is call DB::connect in our _config.php before we retrieve our SiteConfig .

Assuming our database config settings are stored in $databaseConfig , here is the code to fetch our SiteConfig :

DB::connect($databaseConfig);
$siteConfig = SiteConfig::current_site_config();

Then we can retrieve SiteConfig variables like so:

$siteConfig->Title;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM