2017-02-08 3 views
1

Boolean変数は、->Nice()関数の値(Yes/No)を示す読み取り専用フィールドとしてgetCMSFields()に表示するにはどうすればよいですか?ここで SilverStripe 3ブール型読み取り専用フィールド

は、私が試したものです:

class EventMember extends Member { 

    static $db = array (
     'NewsLetter' => 'Boolean' 
    ); 

    public function getCMSFields() { 
     $fields = parent::getCMSFields(); 


     //WHAT I TRIED 

     //$fields->fieldByName('NewsLetter')->performReadonlyTransformation(); 
     /*$newsletter = new ReadonlyField('NewsLetter', 'NewsLetter'); 
     $value = $newsletter->getValue(); 
     $newsletter->setValue($value)->Nice(); 
     $fields->replaceField('NewsLetter', $newsletter);*/ 

     //$fields->addFieldToTab('Root.Main', $nL = CheckboxField::create('NewsLetter', 'Newsletter')); 
     //$value = $this->NewsLetter->Value()->Nice(); 
     //$nL->setValue($value)->Nice(); 


     $this->extend('updateCMSFields', $fields); 
     return $fields; 
    } 

} 

答えて

1
$fields->removeByName('NewsLetter'); 
$nL = DBField::create_field('ReadonlyField', $this->obj('NewsLetter')->Nice(), 'Newsletter'); 
$fields->addFieldToTab('Root.Main', $nL); 
+0

は読み取り専用のFieldList内のすべてのフィールドを作成するには:$フィールド= $ fields-> makeReadonly(); –

+0

ReadOnlyFieldにはまだ値が含まれていますか?私は2つのフィールドを試してみよう:HiddenFieldは値を保持するために(0または1)DBに再度保存するため、LiteralFieldまたはReadOnlyFieldはフォームにniceの/ noの値を表示する。あるいは、yes/noを含む読み取り専用のドロップダウンが機能します。この方法でブール値を保存し、素敵なバージョンを表示することができます。 – wmk

+0

この場合、EventMembersにはバックエンドへのアクセス権がありません。 EventMembersには、自分のプロフィールを編集するためのFrontend上に別のFormがあります。バックエンドでは、AdminsはEventMembersを編集できます。 if(!Permission :: check( 'ADMIN'))... content-authorsはEventMemberを編集できません –

関連する問題