简体   繁体   English

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

[英]How to set a property in SiteConfig in silverstripe?

I have a created a CustomSiteConfig in silverstripe using this guide -> https://docs.silverstripe.org/en/4/developer_guides/configuration/siteconfig/#siteconfig我使用本指南在 silverstripe 中创建了一个 CustomSiteConfig -> https://docs.silverstripe.org/en/4/developer_guides/configuration/siteconfig/#siteconfig

This is how it looks like:这是它的样子:

<?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")
        );
    }
}

And I can retrieve the information by doing我可以通过这样做来检索信息

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

And it works, but how to set it back?它有效,但如何将其设置回来? I have tried $config->__set('PoptinConfig', 'foo') , $config->setField('PoptinConfig', 'foo');我试过$config->__set('PoptinConfig', 'foo') , $config->setField('PoptinConfig', 'foo'); but none of them work.但它们都不起作用。 No errors, but the field doesn't change.没有错误,但该字段没有改变。

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

Should do the trick, just like on any class that extends DataObject.应该做到这一点,就像在扩展 DataObject 的任何 class 上一样。 Only difference being唯一的区别是

$cfg = SiteConfig::current_site_config();

as it's a SiteConfig method.因为它是一个 SiteConfig 方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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