【问题标题】: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”

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 2015-07-30
      • 2016-06-21
      相关资源
      最近更新 更多