diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..ce3de2d --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +tidelift: "packagist/vlucas/valitron" diff --git a/lang/es.php b/lang/es.php index 7cbe4da..1f3bf8b 100644 --- a/lang/es.php +++ b/lang/es.php @@ -1,35 +1,37 @@ "es obligatorio", - 'equals' => "debe ser igual a '%s'", - 'different' => "debe ser diferente a '%s'", - 'accepted' => "debe ser aceptado", - 'numeric' => "debe ser numérico", - 'integer' => "debe ser un entero", - 'length' => "debe ser mas largo de %d", - 'min' => "debe ser mayor de %s", - 'max' => "debe ser menor de %s", - 'listContains' => "contiene un valor inválido", - 'in' => "contiene un valor inválido", - 'notIn' => "contiene un valor inválido", - 'ip' => "no es una dirección IP", - 'email' => "no es un correo electrónico válido", - 'url' => "no es una URL", - 'urlActive' => "debe ser un dominio activo", - 'alpha' => "debe contener solo letras a-z", - 'alphaNum' => "debe contener solo letras a-z o números 0-9", - 'slug' => "debe contener solo letras a-z, números 0-9, barras y guiones bajos", - 'regex' => "contiene caracteres inválidos", - 'date' => "no es una fecha válida", - 'dateFormat' => "debe ser una fecha con formato '%s'", - 'dateBefore' => "debe ser una fecha antes de '%s'", - 'dateAfter' => "debe ser una fecha después de '%s'", - 'contains' => "debe contener %s", - 'boolean' => "debe ser booleano", - 'lengthBetween' => "debe tener entre %d y %d caracteres", - 'creditCard' => "debe ser un numero de tarjeta de crédito válido", - "lengthMin" => "debe tener al menos %d caracteres", - "lengthMax" => "debe tener menos de %d caracteres", - "instanceOf" => "debe ser una instancia de '%s'" + 'required' => "es obligatorio", + 'equals' => "debe ser igual a '%s'", + 'different' => "debe ser diferente a '%s'", + 'accepted' => "debe ser aceptado", + 'numeric' => "debe ser numérico", + 'integer' => "debe ser un entero", + 'length' => "debe ser mas largo de %d", + 'min' => "debe ser mayor de %s", + 'max' => "debe ser menor de %s", + 'in' => "contiene un valor inválido", + 'notIn' => "contiene un valor inválido", + 'ip' => "no es una dirección IP", + 'email' => "no es un correo electrónico válido", + 'url' => "no es una URL", + 'urlActive' => "debe ser un dominio activo", + 'alpha' => "debe contener solo letras a-z", + 'alphaNum' => "debe contener solo letras a-z o números 0-9", + 'slug' => "debe contener solo letras a-z, números 0-9, barras y guiones bajos", + 'regex' => "contiene caracteres inválidos", + 'date' => "no es una fecha válida", + 'dateFormat' => "debe ser una fecha con formato '%s'", + 'dateBefore' => "debe ser una fecha antes de '%s'", + 'dateAfter' => "debe ser una fecha después de '%s'", + 'contains' => "debe contener %s", + 'boolean' => "debe ser booleano", + 'lengthBetween' => "debe tener entre %d y %d caracteres", + 'creditCard' => "debe ser un numero de tarjeta de crédito válido", + "lengthMin" => "debe tener al menos %d caracteres", + "lengthMax" => "debe tener menos de %d caracteres", + "instanceOf" => "debe ser una instancia de '%s'", + 'containsUnique' => "debe contener solo valores únicos", + 'subset' => "contiene un elemento que no está en la lista", + 'arrayHasKeys' => "no contiene todas las claves requeridas" ); diff --git a/lang/pt-br.php b/lang/pt-br.php index 2fa1fca..e32afca 100644 --- a/lang/pt-br.php +++ b/lang/pt-br.php @@ -1,35 +1,37 @@ "é obrigatório", - 'equals' => "deve ser o mesmo que '%s'", - 'different' => "deve ser diferente de '%s'", - 'accepted' => "deve ser aceito", - 'numeric' => "deve ser um número", - 'integer' => "deve ser um inteiro", - 'length' => "deve ter %d caracteres", - 'min' => "deve ser maior que %s", - 'max' => "deve ser menor que %s", - 'listContains' => "contém um valor inválido", - 'in' => "contém um valor inválido", - 'notIn' => "contém um valor inválido", - 'ip' => "não é um IP válido", - 'email' => "não é um email válido", - 'url' => "não é uma URL válida", - 'urlActive' => "deve ser um domínio ativo", - 'alpha' => "deve conter as letras a-z", - 'alphaNum' => "deve conter apenas letras a-z e/ou números 0-9", - 'slug' => "deve conter apenas letras a-z, números 0-9, ou os caracteres - ou _", - 'regex' => "contém caracteres inválidos", - 'date' => "não é uma data válida", - 'dateFormat' => "deve ser uma data no formato '%s'", - 'dateBefore' => "deve ser uma data anterior a '%s'", - 'dateAfter' => "deve ser uma data posterior a '%s'", - 'contains' => "deve conter %s", - 'boolean' => "deve ser um booleano", - 'lengthBetween' => "deve estar entre %d e %d caracteres", - 'creditCard' => "deve ser um numero de cartão de credito válido", - 'lengthMin' => "deve ter ao menos %d caracteres", - 'lengthMax' => "não deve exceder %d caracteres", - 'instanceOf' => "deve ser uma instância de '%s'" -); + 'required' => "é obrigatório", + 'equals' => "deve ser o mesmo que '%s'", + 'different' => "deve ser diferente de '%s'", + 'accepted' => "deve ser aceito", + 'numeric' => "deve ser um número", + 'integer' => "deve ser um inteiro", + 'length' => "deve ter %d caracteres", + 'min' => "deve ser maior que %s", + 'max' => "deve ser menor que %s", + 'in' => "contém um valor inválido", + 'notIn' => "contém um valor inválido", + 'ip' => "não é um IP válido", + 'email' => "não é um email válido", + 'url' => "não é uma URL válida", + 'urlActive' => "deve ser um domínio ativo", + 'alpha' => "deve conter as letras a-z", + 'alphaNum' => "deve conter apenas letras a-z e/ou números 0-9", + 'slug' => "deve conter apenas letras a-z, números 0-9, ou os caracteres - ou _", + 'regex' => "contém caracteres inválidos", + 'date' => "não é uma data válida", + 'dateFormat' => "deve ser uma data no formato '%s'", + 'dateBefore' => "deve ser uma data anterior a '%s'", + 'dateAfter' => "deve ser uma data posterior a '%s'", + 'contains' => "deve conter %s", + 'boolean' => "deve ser um booleano", + 'lengthBetween' => "deve estar entre %d e %d caracteres", + 'creditCard' => "deve ser um numero de cartão de credito válido", + 'lengthMin' => "deve ter ao menos %d caracteres", + 'lengthMax' => "não deve exceder %d caracteres", + 'instanceOf' => "deve ser uma instância de '%s'", + 'containsUnique' => "deve conter apenas valores únicos", + 'subset' => "contém um item que não está na lista", + 'arrayHasKeys' => "não contém todas as chaves requeridas" +); \ No newline at end of file diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 3fd3b4f..e19fd6a 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -512,7 +512,7 @@ class Validator if (!is_array($params[0])) { $params[0] = array($params[0]); } - if (is_scalar($value)) { + if (is_scalar($value) || is_null($value)) { return $this->validateIn($field, $value, $params); } diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index dce43bb..292a599 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -484,7 +484,7 @@ class ValidateTest extends BaseTestCase $v->rule('lengthMin', 'str', 4); $this->assertTrue($v->validate()); } - + public function testLengthMinValidAltSyntax() { $v = new Valitron\Validator(array('username' => 'martha')); @@ -1749,6 +1749,15 @@ class ValidateTest extends BaseTestCase $this->assertFalse($v->validate()); } + public function testSubsetAcceptNullValue() + { + // rule value equals null + $v = new Validator(array('test_field' => null)); + $v->rule('required', 'test_field'); + $v->rule('subset', 'test_field', array('black', 45)); + $this->assertFalse($v->validate()); + } + public function testContainsUniqueValid() { // numeric values