Validation 银线3.1;在dataobject中使用getCMSValidator进行多个验证
我正在尝试在插入数据库之前验证dataobject。我正在使用函数getCMSValidator()来实现这一点。由于只有一个验证器可用(RequiredValidator),我自己制作了一个扩展验证器,用于检查字段值在数据库中是否唯一Validation 银线3.1;在dataobject中使用getCMSValidator进行多个验证,validation,content-management-system,backend,silverstripe,Validation,Content Management System,Backend,Silverstripe,我正在尝试在插入数据库之前验证dataobject。我正在使用函数getCMSValidator()来实现这一点。由于只有一个验证器可用(RequiredValidator),我自己制作了一个扩展验证器,用于检查字段值在数据库中是否唯一 function getCMSValidator() { return new UniqueValidator("DBTable",array('Field1','Field2')); } 这是有效的。但是现在我发现我自己的位置,我必须做多个验证,例如
function getCMSValidator() {
return new UniqueValidator("DBTable",array('Field1','Field2'));
}
这是有效的。但是现在我发现我自己的位置,我必须做多个验证,例如UniqueValidator和RequiredValidator
我应该如何处理这个问题?最好不创建新的验证器?我以前做过类似的事情,扩展RequiredFields而不是validator。任何扩展验证器的东西都有一个返回布尔值的“php”函数。在这里面,您可以检查必填字段以及您自己的任何进一步验证
class ExampleValidator extends RequiredFields {
public function __construct() {
parent::__construct(array('Field1','Field2'));
}
public function php($data) {
$valid = parent::php($data);
// If $valid is false here you could return immediately
// or continue with further validation of your own
// ...
return $valid;
}
}
是的,我知道。但我不想每次需要验证对象时都创建一个新的验证器。我想编写一个RequiredFields类和一个UniqueFields类,我可以同时使用它们。那么您想执行这两种类型的验证吗?上述方法可以做到这一点,首先完成所需的字段验证,然后继续执行唯一的字段验证。您仍然可以创建UniqueFields验证器,以接受应唯一的字段列表和必需的字段列表,因此您只需要一个验证器。