Forráskód Böngészése

Merge pull request #438 from hiszpek/fix-validation-rule-accepted

Support validation rules `accepted` and `accepted_if`
Shalvah 3 éve
szülő
commit
d224c4a27c

+ 11 - 0
src/Extracting/ParsesValidationRules.php

@@ -188,6 +188,12 @@ trait ParsesValidationRules
                 case 'required':
                     $parameterData['required'] = true;
                     break;
+                case 'accepted':
+                    $parameterData['required'] = true;
+                    $parameterData['type'] = 'boolean';
+                    $parameterData['description'] .= ' Must be accepted.';
+                    $parameterData['setter'] = fn() => true;
+                    break;
 
                 /*
                  * Primitive types. No description should be added
@@ -435,6 +441,11 @@ trait ParsesValidationRules
                             $rule, [':values' => w::getListOfValuesAsFriendlyHtmlString($arguments, "and")]
                         ) . ' ';
                     break;
+                case 'accepted_if':
+                    $parameterData['type'] = 'boolean';
+                    $parameterData['description'] .= " Must be accepted when <code>$arguments[0]</code> is " . w::getListOfValuesAsFriendlyHtmlString(array_slice($arguments, 1));
+                    $parameterData['setter'] = fn() => true;
+                    break;
                 case 'same':
                 case 'different':
                     $parameterData['description'] .= ' ' . $this->getDescription(

+ 18 - 0
tests/Unit/ValidationRuleParsingTest.php

@@ -367,5 +367,23 @@ class ValidationRuleParsingTest extends BaseLaravelTest
             [],
             ['description' => "Must be a file. Must not be greater than 6 kilobytes."],
         ];
+        yield 'accepted' => [
+            ['accepted_param' => 'accepted'],
+            [],
+            [
+                'type' => 'boolean',
+                'description' => 'Must be accepted.',
+            ]
+        ];
+        if (version_compare(Application::VERSION, '8.53', '>=')) {
+            yield 'accepted_if' => [
+                ['accepted_if_param' => 'accepted_if:another_field,a_value'],
+                [],
+                [
+                    'type' => 'boolean',
+                    'description' => "Must be accepted when <code>another_field</code> is <code>a_value</code>.",
+                ]
+            ];
+        }
     }
 }