2017-02-08 9 views
1

Boolean 변수를 부울의 ->Nice() 함수 값 (예/아니요)을 나타내는 읽기 전용 필드로 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 내 모든 필드를 만들려면 : $ 필드 = $ 필드 -> makeReadonly(); –

+0

ReadOnlyField에 여전히 값이 있습니까? 나는 두 개의 필드로 시도 할 것이다. HiddenField는 DB에 다시 저장하기위한 값 (0 또는 1)을 포함하고, LiteralField 또는 ReadOnlyField는 폼에 좋은 예/아니요 값을 표시하기위한 것이다. 또는 yes/no를 포함하는 읽기 전용 드롭 다운이 작동합니다. 이렇게하면 부울 값을 저장하고 멋진 버전을 표시 할 수 있습니다. – wmk

+0

이 경우 EventMembers는 백엔드에 액세스 할 수 없습니다. EventMembers는 자신의 프로파일을 편집하기 위해 Frontend에 별도의 Form을 가지고 있습니다. 백엔드에서만 관리자가 EventMembers를 편집 할 수 있습니다. if (! Permission :: check ('ADMIN')) ... content-authors는 EventMember를 편집 할 수 없습니다 –