Silverstripe 2.4默认值textareafield CustomSiteConfig

时间:2014-02-18 07:40:18

标签: silverstripe

如何在CustomSiteConfig中为textareafield设置默认值? 这不起作用:

class CustomSiteConfig extends DataObjectDecorator {

    function extraStatics() {
        return array(
            'db' => array(
                'MyText' => 'Text'),
            'defaults' => array( 
                'MyText' => 'Bla Bla'),
            'has_one' => array(
                'Logo' => 'Image')
        );

    }

public function updateCMSFields(FieldSet $fields) {

        $fields->addFieldToTab("Root.Main", new TextareaField("MyText", "My Text"));
        $fields->addFieldToTab("Root.Main", new ImageField('Logo', 'Logo'));

    }

2 个答案:

答案 0 :(得分:0)

如果静态不起作用,可能这个未经测试(因为2.4距离很远)代码片段可以提供帮助:

public function populateDefaults() {
    parent::populateDefaults();
    $this->owner->MyText = 'Bla Bla';
}

答案 1 :(得分:0)

此代码有效,但可能不是您的期望。

defaults数组允许您将简单静态值指定为创建记录时的默认值。如果已创建记录,则即使向该数据库表添加新变量,也不会使用defaults数组中的值。

如果要将数据库变量添加到Page而不是SiteConfig,并在defaults数组中指定它的默认值,则所有现有页面都不会获得该默认值但是在那之后创建的任何新页面都会。

由于已创建SiteConfig记录MyText未获得默认值。

如果您使用代码创建新网站并运行dev/build,您会发现SiteConfig MyText变量的默认值为{{1} }}