1

我正在尝试通过以下方式访问我的小部件类中的 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;
    }
}

但我得到一个错误:解析错误:语法错误,意外'(',期待','或';'在/....../widgets_facebookFeed/FacebookFeedWidget.php第8行

我在这里做错了什么?

4

1 回答 1

4

你不能做这样的事情:

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

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

public function populateDefaults() {
    parent::populateDefaults();
    $this->FacebookURL = SiteConfig::current_site_config()->FacebookURL;
}
于 2012-09-22T13:01:13.213 回答