diff --git a/src/Rules/Phone.php b/src/Rules/Phone.php index 7cdecd5..33b39ba 100644 --- a/src/Rules/Phone.php +++ b/src/Rules/Phone.php @@ -158,14 +158,14 @@ public function setParameters($parameters) $this->lenient(); } elseif (strcasecmp('international', $parameter) === 0) { $this->international(); - } elseif ($this->isDataKey($parameter)) { - $this->countryField = $parameter; - } elseif (PhoneNumberCountry::isValid($parameter)) { - $this->country($parameter); } elseif (ctype_digit($parameter) && PhoneNumberType::isValid((int) $parameter)) { $this->type((int) $parameter); } elseif (PhoneNumberType::isValidName($parameter)) { $this->type($parameter); + } elseif ($this->isDataKey($parameter)) { + $this->countryField = $parameter; + } elseif (PhoneNumberCountry::isValid($parameter)) { + $this->country($parameter); } } diff --git a/tests/RuleTest.php b/tests/RuleTest.php index 4467a7a..92d1133 100644 --- a/tests/RuleTest.php +++ b/tests/RuleTest.php @@ -183,6 +183,22 @@ public function it_converts_string_validation_parameters() $this->assertEquals(['mobile', 'fixed_line'], $this->getProtectedProperty($rule, 'blockedTypes')); } + /** @test */ + public function it_allows_data_field_names_to_be_parameters() + { + $base = (new Phone)->setValidator(validator([ + 'mobile' => null, + 'fixed_line' => null, + 'lenient' => null, + 'international' => null, + ])); + + $rule = $base->setParameters(['mobile', 'fixed_line', 'lenient', 'international']); + $this->assertEquals(['mobile', 'fixed_line'], $this->getProtectedProperty($rule, 'allowedTypes')); + $this->assertTrue($this->getProtectedProperty($rule, 'lenient')); + $this->assertTrue($this->getProtectedProperty($rule, 'international')); + } + /** @test */ public function it_treats_string_validation_parameters_case_insensitive() {