2012-09-17 40 views
1

得到SiteConfig價值我想在我的窗口小部件類訪問siteconfig值和:Silverstripe - 在小部件

<?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

你不能做這樣的事情:

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

但幸運的是功能polulateDefaults,這需要$默認設置並將其設置爲對象,所以我們可以勾成:

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