2016-06-01 27 views
2

通用布爾格式使用布爾字段的摘要顯示的值爲0或1默認...在GridField

class MyDataObject extends DataObject { 

    private static $db = array(
     'Name'  => 'Varchar(255)', 
     'MyBoolean' => 'Boolean', 
    ); 

    public static $summary_fields = array (
     'Name', 
     'MyBoolean', 
    ); 
} 

...我知道如何改變這是或否使用鑄造...

class MyDataObject extends DataObject { 

    private static $db = array(
     'Name'  => 'Varchar(255)', 
     'MyBoolean' => 'Boolean', 
    ); 

    public static $casting = array (
     'MyBooleanText' => 'Text', 
    ); 

    public function MyBooleanText() { 
     return $this->MyBoolean ? 'Yes' : 'No'; 
    } 

    public static $summary_fields = array (
     'Name', 
     'MyBooleanText', 
    ); 
} 

...但我的問題是如何更改每個值默認情況下顯示在彙總行中,而無需爲每個對象設置鑄造?

+0

注意,在SilverStripe 3.1+所有這些靜態變量聲明爲'private'。 – 3dgoo

+0

你試過類似'private static $ casting = array( 'MyBoolean'=>'Nice', );'?? – wmk

+0

我沒有試過這個@wmk,但我現在已經沒有做出改變,爲什麼這樣對你有用?我的意思是,如果這可能會進入所有數據對象的擴展它可能會工作... – Barry

回答

1

在你的$summary_fields你只需要堅持.Nice方法到你的布爾值。

E.g:

class MyDataObject extends DataObject { 

    static $db = array(
     'Name'  => 'Varchar(255)', 
     'MyBoolean' => 'Boolean', 
    ); 

    public static $summary_fields = array (
     'Name' => 'Name', 
     'MyBoolean.Nice' => 'MyBoolean', 
    ); 
} 
+0

我有這個奇怪的結果...在列消失...但我不能以簡單的方式再現。然而,我的主要問題是,它不能一般解決它 - 我仍然需要手動更新每個summary_fields – Barry

+0

這真棒。我一直在寫OP這樣的方法就像一個笨蛋! –

相關問題