2016-03-24 7 views
1

Hinweis: Version 3,1Silvers Felder Validierung in CMS

enter image description here

Der Versuch, den Eingang dieser Felder von CMS zu validieren:

  • Verfallsdatum muss nach dem Datum veröffentlichen werden.

Ich habe sogar eine einfache Validierung (erforderlich) versucht, funktioniert aber nicht.

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

Ich kann die Werte manipulieren und vergleichen, aber ich kann nicht darauf zugreifen.

Irgendwelche Ideen, sind willkommen.

Antwort

1

Sie sollten in der Lage sein, den grundlegenden Validator in Bezug auf die Überprüfung eines Feldes ist nicht leer ... verwenden, aber Sie sollten den Namen des Feldes "PublishDate", nicht "publishDatetimeField" verwenden.

In der Regel ist dies, wie Validierungen vollständig in Silvers gesetzt ...

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

Sie für das, was die Daten überprüfen ...

die(var_dump($data)); 

und dies sollte eine Zeichenfolge in MYSQL sein Format ... wie "2016-03-24 11:41:00"