administrador.modelado.validaciones.valida_data_filtro_especial - gamboamartin/administrador GitHub Wiki
valida_data_filtro_especial
Esta función valida un campo y un filtro específico, asegurándose de que los datos cumplan con ciertos requisitos. Si los datos no cumplen con los criterios esperados, la función retorna un error; de lo contrario, retorna true.
Signatura
final public function valida_data_filtro_especial(string $campo, array $filtro): true|array
Parámetros
-
- $campo** (string): El nombre del campo que se está validando. Este campo no debe estar vacío y debe ser un string.
-
- $filtro** (array): Un array asociativo que contiene la configuración del filtro para el campo. Este array debe incluir al menos los siguientes elementos para cada campo:
-
-
- operador
-
-
-
-
- Un operador de comparación (por ejemplo, =, >, <, etc.).
-
-
-
-
- valor
-
-
-
-
- El valor a comparar con el campo.
-
-
-
-
- valor_es_campo (opcional)
-
-
-
-
- Indica si el valor es otro campo.
-
-
Retorna
-
true: La función retorna true cuando todas las validaciones son exitosas, indicando que los datos del campo y el filtro son correctos.
-
array: La función retorna un array cuando una de las validaciones falla. Este array contiene información sobre el error que ocurrió.
Explicación Detallada
-
Validación de campo vacío
-
- Si el campo está vacío ($campo === ''), retorna un error indicando que el campo está vacío.
-
Validación de tipo de dato del campo
-
- Si el campo no es un string y no está definido el valor valor_es_campo en el filtro, retorna un error indicando que el campo debe ser un string.
-
Validación de existencia del operador
-
- Si el filtro no tiene definido un operador para el campo, retorna un error indicando que debe existir un operador en el filtro.
-
Asignación de valor vacío
-
- Si no existe un valor para el campo en el filtro, se asigna un valor vacío ('').
-
Validación de tipo de dato del valor
-
- Si el valor del campo en el filtro es un array, retorna un error indicando que el valor debe ser un dato simple (no un array).
-
Retorno exitoso
-
- Si todas las validaciones anteriores son exitosas, retorna true.
Ejemplos
- Ejemplo 1: Campo vacío
$campo = '';
$filtro = [];
$resultado = valida_data_filtro_especial($campo, $filtro);
// Resultado: Error campo vacio
- Ejemplo 2: Campo no es string y valor_es_campo no está definido
$campo = 123;
$filtro = [
123 => [
'operador' => '=',
'valor' => 'valor'
]
];
$resultado = valida_data_filtro_especial($campo, $filtro);
// Resultado: Error el campo debe ser un string $filtro[campo]
- Ejemplo 3: Falta operador en el filtro
$campo = 'nombre';
$filtro = [
'nombre' => [
'valor' => 'Juan'
]
];
$resultado = valida_data_filtro_especial($campo, $filtro);
// Resultado: Error debe existir $filtro[campo][operador]
- Ejemplo 4: Valor del campo es un array
$campo = 'edad';
$filtro = [
'edad' => [
'operador' => '>',
'valor' => [25]
]
];
$resultado = valida_data_filtro_especial($campo, $filtro);
// Resultado: Error $filtro['edad']['valor'] debe ser un dato
- Ejemplo 5: Validación exitosa
$campo = 'ciudad';
$filtro = [
'ciudad' => [
'operador' => '=',
'valor' => 'Madrid'
]
];
$resultado = valida_data_filtro_especial($campo, $filtro);
// Resultado: true
Código de la Función
final public function valida_data_filtro_especial(string $campo, array $filtro): true|array
{
if($campo === ''){
return $this->error->error(mensaje: "Error campo vacio", data: $campo, es_final: true);
}
if(!isset($filtro[$campo]['valor_es_campo']) && is_numeric($campo)){
return $this->error->error(mensaje:'Error el campo debe ser un string $filtro[campo]', data:$filtro,
es_final: true);
}
if(!isset($filtro[$campo]['operador'])){
return $this->error->error(mensaje:'Error debe existir $filtro[campo][operador]', data:$filtro,
es_final: true);
}
if(!isset($filtro[$campo]['valor'])){
$filtro[$campo]['valor'] = '';
}
if(is_array($filtro[$campo]['valor'])){
return $this->error->error(mensaje:'Error $filtro['.$campo.'][\'valor\'] debe ser un dato', data:$filtro,
es_final: true);
}
return true;
}