如何在silverstripe中的SiteConfig中设置属性



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

这就是它的样子:

<?php
namespace PoptinSilverstripe;
use SilverStripeFormsFieldList;
use SilverStripeFormsTextField;
use SilverStripeORMDataExtension;
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->__set('PoptinConfig', 'foo')$config->setField('PoptinConfig', 'foo');,但都不起作用。没有错误,但字段没有更改。

$cfg = SiteConfig::current_site_config();
$cfg->PoptinConfig = "Something";
$cfg->write();

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

$cfg = SiteConfig::current_site_config();

因为它是SiteConfig方法。

最新更新