administrador.base.controller.init.modela_input - gamboamartin/administrador GitHub Wiki
modela_input
Esta función privada se encarga de modelar los campos de entrada de un modelo, asignando tipos específicos a cada campo según un conjunto de atributos proporcionados.
Signatura
private function modela_input(string $atributo, array $campos_view, stdClass $keys): array
Parámetros
-
$atributo
(string): El nombre del atributo que se utilizará como tipo para los campos de entrada. -
$campos_view
(array): Un array asociativo que representa los campos de la vista. -
$keys
(stdClass): Un objeto stdClass que contiene las claves de los campos de entrada, donde cada propiedad del objeto representa un atributo y su valor es un array de claves de campo correspondientes a ese atributo.
Retorna
- Tipo:
array
- Descripción: Un array actualizado que representa los campos de la vista de entrada, con el tipo asignado a cada campo según el atributo especificado.
Explicación Detallada
Validación del atributo: Se verifica si la variable $atributo está vacía. Si lo está, se devuelve un mensaje de error indicando que el atributo está vacío.
Creación del conjunto de claves: Se verifica si el atributo existe en el objeto $keys. Si no existe, se crea una entrada vacía para el atributo en $keys.
Validación del tipo de atributo: Se verifica si el valor correspondiente al atributo en $keys es un array. Si no lo es, se devuelve un mensaje de error indicando que el atributo debe ser un array.
Inicialización de los campos de entrada: Se llama a la función model_init_campos_inputs() para inicializar los campos de entrada con el tipo especificado por el atributo.
Retorno de campos actualizados: Se devuelve el array $campos_view actualizado con el tipo asignado a cada campo según el atributo especificado.
Ejemplos
// Ejemplo: Modelar campos de entrada de un modelo
$campos = [
'nombre' => ['type' => 'string', 'required' => true],
'edad' => ['type' => 'integer', 'required' => false],
];
$atributo_tipo = 'string';
$atributos = new stdClass();
$atributos->atributo1 = ['nombre', 'edad'];
$resultado_actualizado = modela_input($atributo_tipo, $campos, $atributos);
if (is_array($resultado_actualizado)) {
// Utilizar los campos actualizados
var_dump($resultado_actualizado);
} else {
// Manejar el mensaje de error
echo "Hubo un error al modelar los campos de entrada: ";
var_dump($resultado_actualizado);
}
Código de la Función
private function modela_input(string $atributo, array $campos_view, stdClass $keys): array
{
$atributo = trim($atributo);
if($atributo === ''){
return $this->error->error(mensaje: 'Error atributo esta vacio',data: $atributo, es_final: true);
}
if(!isset($keys->$atributo)){
$keys->$atributo = array();
}
if(!is_array($keys->$atributo)){
return $this->error->error(mensaje: 'Error $keys->'.$atributo.' debe ser un array',data: $keys,
es_final: true);
}
$campos_view = $this->model_init_campos_inputs(campos_view: $campos_view, keys: $keys->$atributo,
type: $atributo);
if(errores::$error){
return $this->error->error(mensaje: 'Error al inicializar campo view',data: $campos_view);
}
return $campos_view;
}