如何在 silverstripe 中设置 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');但没有一个有效。没有错误,但字段没有改变。


aluckdog
浏览 103回答 1
1回答

catspeake

$cfg = SiteConfig::current_site_config();$cfg->PoptinConfig = "Something";$cfg->write();应该可以解决这个问题,就像任何扩展 DataObject 的类一样。唯一的区别是$cfg = SiteConfig::current_site_config();因为它是一个 SiteConfig 方法。
打开App,查看更多内容
随时随地看视频慕课网APP