【问题标题】:Silverstripe fields validation in CMSCMS 中的 Silverstripe 字段验证
【发布时间】:2016-03-24 10:29:12
【问题描述】:
注意:版本 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');
}
我可以操作这些值并比较它们,但我无法访问它们。
欢迎提出任何想法。
【问题讨论】:
标签:
php
validation
content-management-system
silverstripe
【解决方案1】:
您应该能够使用基本验证器来检查字段是否为空...但您应该使用字段名称“PublishDate”,而不是“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”