注意:版本3.1
尝试验证来自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');
}
我可以操纵这些值并进行比较,但我无法访问它们。
欢迎任何想法。
答案 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"