【问题标题】:How to set a property in SiteConfig in silverstripe?如何在 silverstripe 的 SiteConfig 中设置属性?
【发布时间】:2020-07-09 12:46:13
【问题描述】:

我使用本指南在 silverstripe 中创建了一个 CustomSiteConfig -> https://docs.silverstripe.org/en/4/developer_guides/configuration/siteconfig/#siteconfig

看起来是这样的:

<?php
namespace Poptin\Silverstripe;

use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\ORM\DataExtension;

class PoptinSiteConfig extends DataExtension 
{
    private static $db = [
        'PoptinConfig' => 'Text'
    ];

    public function updateCMSFields(FieldList $fields) 
    {
        $fields->addFieldToTab("Root.Main", 
            new TextField("PoptinConfig", "Poptin Config")
        );
    }
}

我可以通过这样做来检索信息

$config = SiteConfig::current_site_config();
var_dump($config->PoptinConfig);

它可以工作,但是如何将其设置回来?我试过$config-&gt;__set('PoptinConfig', 'foo')$config-&gt;setField('PoptinConfig', 'foo');,但它们都不起作用。没有错误,但字段没有改变。

【问题讨论】:

    标签: php config silverstripe silverstripe-4


    【解决方案1】:
    $cfg = SiteConfig::current_site_config();
    $cfg->PoptinConfig = "Something";
    $cfg->write();
    

    应该做到这一点,就像在任何扩展 DataObject 的类上一样。唯一的区别是

    $cfg = SiteConfig::current_site_config();
    

    因为它是一个 SiteConfig 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2021-09-29
      • 1970-01-01
      • 2020-04-02
      • 2011-03-04
      相关资源
      最近更新 更多