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;
    }