CMS中的Silverstripe字段验证

时间:2016-03-24 10:29:13

标签: php validation content-management-system silverstripe

注意:版本3.1

enter image description here

尝试验证来自CMS的此字段的输入:

  • 到期日必须在发布日期之后。

我尝试了一个简单的验证(必需)但不起作用。

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 个答案:

答案 0 :(得分:1)

您应该能够在检查字段是否空白时使用基本验证器...但您应该使用字段的名称" PublishDate",而不是&#34 ; publishDatetimeField"

通常,这是在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());
    }
}

你可以查看数据......

die(var_dump($data));

这应该是MYSQL格式的字符串......比如" 2016-03-24 11:41:00"