Как установить свойство в SiteConfig в silverstripe? - PullRequest
0 голосов
/ 09 июля 2020

Я создал 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');, но ни один из них не работает. Ошибок нет, но поле не меняется.

1 Ответ

1 голос
/ 09 июля 2020
$cfg = SiteConfig::current_site_config();
$cfg->PoptinConfig = "Something";
$cfg->write();

Должен помочь, как и в любом классе, расширяющем DataObject. Единственная разница в том, что это

$cfg = SiteConfig::current_site_config();

, поскольку это метод SiteConfig.

...