Compare commits

...

6 Commits

Author SHA1 Message Date
Sunny Side Up
f823ec42dc
Merge 5c9c5519f3 into b02ac10fc8 2024-09-30 05:30:34 +13:00
github-actions
b02ac10fc8 Merge branch '5.3' into 5 2024-09-29 08:43:17 +00:00
Guy Sartorelli
8a538f78ff
Merge pull request #11395 from silverstripe-terraformers/bugfix/member-validator
FIX: Member form validator fix.
2024-09-27 14:51:23 +12:00
Mojmir Fendek
55564814b9 Add a test. 2024-09-27 14:44:29 +12:00
Mojmir Fendek
829a28dc68 FIX: Member form validator fix. 2024-09-23 08:59:35 +12:00
Sunny Side Up
5c9c5519f3
FIX: equate empty string to null for more intuitive results 2024-09-08 12:21:22 +12:00
3 changed files with 47 additions and 0 deletions

View File

@ -40,7 +40,18 @@ trait SearchFilterable
$filterServiceName = "DataListFilter.{$secondArg}"; $filterServiceName = "DataListFilter.{$secondArg}";
} }
} }
if (is_array($value)) {
foreach ($value as $key => $val) {
if ($val === '' || $val === 'null') {
$value[] = null;
}
}
} else {
if ($value === '' || $value === 'null') {
$value = ['', null];
}
}
// Build instance // Build instance
return Injector::inst()->create($filterServiceName, $fieldName, $value, $modifiers); return Injector::inst()->create($filterServiceName, $fieldName, $value, $modifiers);
} }

View File

@ -15,6 +15,7 @@ use SilverStripe\Core\Convert;
use SilverStripe\Core\Injector\Injector; use SilverStripe\Core\Injector\Injector;
use SilverStripe\Dev\TestMailer; use SilverStripe\Dev\TestMailer;
use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\CompositeValidator;
use SilverStripe\Forms\ConfirmedPasswordField; use SilverStripe\Forms\ConfirmedPasswordField;
use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\FieldList; use SilverStripe\Forms\FieldList;
@ -697,6 +698,20 @@ class Member extends DataObject
return $validator; return $validator;
} }
public function getCMSCompositeValidator(): CompositeValidator
{
// Add the member validator before extension point, so it's much easier to customise this
// via an extension
$this->beforeExtending(
'updateCMSCompositeValidator',
function (CompositeValidator $compositeValidator): void {
$memberValidator = $this->getValidator();
$compositeValidator->addValidator($memberValidator);
}
);
return parent::getCMSCompositeValidator();
}
/** /**
* Temporarily act as the specified user, limited to a $callback, but * Temporarily act as the specified user, limited to a $callback, but

View File

@ -0,0 +1,21 @@
<?php
namespace SilverStripe\Core\Tests\Validation;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Security\Member;
use SilverStripe\Security\Member_Validator;
class MemberValidatorTest extends SapphireTest
{
protected $usesDatabase = false;
public function testMemberValidator(): void
{
$member = new Member();
$compositeValidator = $member->getCMSCompositeValidator();
$memberValidators = $compositeValidator->getValidatorsByType(Member_Validator::class);
$this->assertCount(1, $memberValidators, 'We expect exactly one member validator');
}
}