Skip to content

Commit 88c7266

Browse files
drobek94martin.sedlacek
authored andcommitted
Validator: added support for enums (#282)
Co-authored-by: martin.sedlacek <martin.sedlacek@motv.eu>
1 parent b55bcb4 commit 88c7266

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

src/Forms/Validator.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ public static function validateEqual(Control $control, $arg): bool
113113

114114
foreach ($values as $val) {
115115
foreach ($args as $item) {
116+
if ($item instanceof \BackedEnum) {
117+
$item = $item->value;
118+
}
119+
116120
if ((string) $val === (string) $item) {
117121
continue 2;
118122
}

tests/Forms/Controls.BaseControl.phpt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ use Tester\Assert;
1414
require __DIR__ . '/../bootstrap.php';
1515

1616

17+
enum TestEnum: string {
18+
case CASE_1 = 'case 1';
19+
case CASE_2 = 'case 2';
20+
}
21+
22+
1723
before(function () {
1824
Form::initialize(true);
1925
});
@@ -76,6 +82,18 @@ test('validators', function () {
7682
});
7783

7884

85+
test('validators for enums', function () {
86+
$form = new Form;
87+
$input = $form->addText('text');
88+
$input->setValue(TestEnum::CASE_1->value);
89+
90+
Assert::true(Validator::validateEqual($input, TestEnum::CASE_1));
91+
Assert::true(Validator::validateEqual($input, 'case 1'));
92+
Assert::false(Validator::validateEqual($input, TestEnum::CASE_2));
93+
Assert::false(Validator::validateEqual($input, 1));
94+
});
95+
96+
7997
test('validators for array', function () {
8098
$form = new Form;
8199
$input = $form->addMultiSelect('select', null, ['a', 'b', 'c', 'd']);

0 commit comments

Comments
 (0)