2014-02-18 71 views
0

如何在CustomSiteConfig中爲textareafield設置默認值? 這不工作:Silverstripe 2.4默認值textareafield CustomSiteConfig

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')); 

    } 

回答

0

如果靜態不起作用,可能這個未經測試(因爲2.4是那麼的遙遠)片段可以幫助:

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

此代碼的工作,但也許不是你如何期望。

defaults數組允許您將簡單靜態值指定爲創建記錄時的默認值。如果已經創建了一條記錄,那麼即使在向該數據庫表添加新變量時,也不會使用來自defaults數組的值。

如果你添加一個數據庫變量的Page,而不是SiteConfig,並指定它的defaults數組中的默認值,所有現有的網頁不會得到會在該點之後創建的默認值,但任何新的一頁。

因爲SiteConfig記錄已經創建MyText沒有得到默認值。

如果你創建你的代碼的新網站,並運行dev/build,你會發現你的SiteConfigMyText變量"bla bla"默認值。