如何在 silverstripe 的 SiteConfig 中设置 属性?
How to set a property in SiteConfig in silverstripe?
我使用本指南在 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->__set('PoptinConfig', 'foo')
、$config->setField('PoptinConfig', 'foo');
,但其中 none 有效。没有错误,但字段没有改变。
$cfg = SiteConfig::current_site_config();
$cfg->PoptinConfig = "Something";
$cfg->write();
应该可以做到这一点,就像任何扩展 DataObject 的 class 一样。唯一的区别是
$cfg = SiteConfig::current_site_config();
因为它是一种 SiteConfig 方法。
我使用本指南在 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->__set('PoptinConfig', 'foo')
、$config->setField('PoptinConfig', 'foo');
,但其中 none 有效。没有错误,但字段没有改变。
$cfg = SiteConfig::current_site_config();
$cfg->PoptinConfig = "Something";
$cfg->write();
应该可以做到这一点,就像任何扩展 DataObject 的 class 一样。唯一的区别是
$cfg = SiteConfig::current_site_config();
因为它是一种 SiteConfig 方法。