CMS 中的 Silverstripe 字段验证
Silverstripe fields validation in CMS
注:版本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');
}
我可以操纵这些值并比较它们,但我无法访问它们。
欢迎任何想法。
您应该能够使用基本验证器检查字段是否为空...但您应该使用字段名称 "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”
注:版本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');
}
我可以操纵这些值并比较它们,但我无法访问它们。
欢迎任何想法。
您应该能够使用基本验证器检查字段是否为空...但您应该使用字段名称 "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”