Silverstripe - 在Widget中获取SiteConfig值

时间:2012-09-17 00:30:56

标签: silverstripe

我正在尝试使用以下命令访问我的widget类中的siteconfig值:

<?php
class FacebookFeedWidget extends Widget{
    static $title = "";
    static $cmsTitle = "Facebook Feed Widget";
    static $description = "This widget shows the Facebook feed";
    static $doSiteConfig = DataObject::get_one('SiteConfig'); 

    static $db = array(
        "FacebookURL" => "Text"
    );

    static $defaults = array(
        "FacebookURL" => $doSiteConfig->FacebookURL
    );

    function getCMSFields(){
        return new FieldList(
            new TextField("FacebookURL", "Facebook URL")
        );
    }

    function getFacebookURL(){
        $output = new ArrayList();
        $output->push(
            new ArrayData(
                array(
                    "FacebookURL" => $this->FacebookURL
                )
            )
        );
        return $output;
    }
}

但是收到错误: 解析错误:第8行的/....../widgets_facebookFeed/FacebookFeedWidget.php中的语法错误,意外'(',期待','或';'

我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

你做不到这样的事情:

static $defaults = array(
    "FacebookURL" => $doSiteConfig->FacebookURL
);

但幸运的是有一个函数polulateDefaults,它接受$ defaults并将它设置为对象,所以我们可以加入:

public function populateDefaults() {
    parent::populateDefaults();
    $this->FacebookURL = SiteConfig::current_site_config()->FacebookURL;
}