【问题标题】:Get SiteConfig variables inside _config.php在 _config.php 中获取 SiteConfig 变量
【发布时间】:2017-01-08 08:41:33
【问题描述】:

在 SilverStripe 3.4.1 中,我想通过管理设置控制 _config.php 文件值。我想在 Admin > Settings > MyTab 中设置一些变量,然后在 _config.php 中访问这些变量。

有没有办法访问_config.php 文件中的SiteConfig 变量?

我尝试使用几种不同的方式来获取配置数据:

  • Config::inst()
    • print_r/var_dump 将所有值作为数组给出
  • Config::inst()->get($this->class, 'PropertyName')$this->config()-> get('PropertyName')
    • 返回空
  • SiteConfig::current_site_config() 或基于前两个的任何其他类似变体
    • 内部服务器错误

我想这样做的原因是我有一个插件可以替换一些 SilverStripe 默认操作,但它需要插入一些数据。如果未插入此数据,则应保持默认值。

以下是我阅读过的一些资源,试图找到解决方案:

【问题讨论】:

标签: php silverstripe


【解决方案1】:

问题是DB::connect_config.php 的那个阶段没有被调用。因此我们无法从数据库中检索项目。

我们可以做的是在我们检索我们的SiteConfig 之前在我们的_config.php 中调用DB::connect

假设我们的数据库配置设置存储在$databaseConfig,这里是获取我们的SiteConfig的代码:

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

然后我们可以像这样检索SiteConfig变量:

$siteConfig->Title;

【讨论】:

  • 还有一件事要补充。如果要使用它,请记住导致数据库连接较早打开,添加/删除数据库字段(至少对于设置页面,我尝试过)最终会出现错误 500。为避免这种情况,必须禁用较早的 db:connect。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
  • 2016-12-29
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多