2016-03-24 9 views
1

注:Silverstripeフィールドの検証

  • 有効期限が後の日付を公開する必要がありますバージョンCMSからこのフィールドの入力を検証しようとすると、3.1

    enter image description here

私は単純な検証(必須)を試みても動作しません。

public function updateCMSFields(FieldList $fields) { 
    $publishDatetimeField = new DatetimeField('PublishDate', 'Publish Date' ); 
    $expiryDatetimeField = new DatetimeField('ExpiryDate', 'Expiry Date'); 
    $fields->addFieldToTab('Root.Options', $publishDatetimeField); 
    $fields->addFieldToTab('Root.Options', $expiryDatetimeField); 
} 
public function getCMSValidator(){ 
    return new RequiredFields('publishDatetimeField'); 
} 

値を操作して比較できますが、アクセスできません。

アイデアは大歓迎です。

答えて

1

フィールドが空ではないことを確認するために基本バリデータを使用できるはずですが、 "publishDatetimeField"ではなく "PublishDate"フィールドの名前を使用する必要があります。あなたはどのようなデータ...

die(var_dump($data)); 

と、これはMYSQLの文字列でなければなりませんかどうかを確認することができます

一般的に、これは検証が完全にsilverstripeに設定されている方法です...

class MyDataObject extends DataObject { 

    static $db = array(
     'MyDateField'  => 'SS_DateTime', 
    ); 

    function getCMSValidator() { 
     return new MyDataObject_Validator(); 
    } 
} 

class MyDataObject_Validator extends RequiredFields { 

    function php($data) { 
     $bRet = parent::php($data); 

     //do checking here 
     if (empty($data['MyDateField'])) 
      $this->validationError('MyDateField','MyDateField cannot be empty','required'); 

     return count($this->getErrors()); 
    } 
} 

形式...「2016-03-24 11:41:00」