2016-03-24 19 views
1

Not:Silverstripe alanlar doğrulama

  • son kullanma tarihi sonrasında yayınlanma tarihi olmalıdır: sürüm CMS'den bu alanların girişini doğrulamak için çalışıyorum 3,1

    enter image description here

    .

Basit bir doğrulama bile denedim (gerekli) ancak çalışmıyor.

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

Değerleri değiştirebilir ve karşılaştırabilirim, ancak bunlara erişemiyorum.

Herhangi bir fikir, bekliyoruz.

cevap

1

Bir alanının kontrol edilmesi bakımından temel doğrulayıcı kullanabilirsiniz gerekir boş değil ... ama alanı "PublishDate" değil "publishDatetimeField" adını kullanarak edilmelidir.

bu doğrulamalar tamamen Silverstripe ayarlanır nasıl Genelde

...

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()); 
    } 
} 
ne verileri kontrol edebilirsiniz

...

die(var_dump($data)); 

ve bu MYSQL bir dize olmalıdır biçim ... "2016/03/24 11:41:00"

gibi