# Referencia de parámetros y variables

[← Volver al índice](../crudl.md)

Resumen de todos los parámetros, variables globales y punteros del marco.

La columna **Estado** indica:

* **Disponible** — implementado y utilizable.
* **Reservado** — nombre previsto por el marco, sin implementación actual. No lo utilice; puede cambiar de significado.

## Parámetros de URL

Disponibles en `@http_context/request/get` y en el miembro `parameters` del contexto de la vista.

| Parámetro | Estado | Descripción |
|---|---|---|
| `_entities_type` | Disponible | Tipo de entidades. Determina la carpeta de la entidad y, salvo `@table_name`, el nombre de la tabla. Requerido. |
| `_entity_id` | Disponible | Identificador de la entidad. Su presencia determina la operación. |
| `_key` | Disponible | Campo usado como identificador. Predeterminado `sys_pk`. Tiene prioridad sobre `@keyfield`. |
| `_app_group` | Disponible | Grupo de aplicaciones del administrador de conexiones. |
| `_connection` | Disponible | Conexión dentro del grupo de aplicaciones. |
| `ws` | Disponible | Espacio de trabajo. Su presencia activa la suplantación de identidad. |
| `_redirect` | Disponible | Con el valor `disabled`, suprime la redirección PRG y renderiza el formulario. |
| `_select` | Disponible | Lo genera el marco en la URL de redirección. Contiene el identificador del registro guardado. |
| `_operation` | Disponible | Lo agrega el marco. Contiene la operación realizada. Visible en el contexto de la vista. |
| `_from_url_e` | Disponible | URL de retorno codificada. |
| `_view` | Convención | No lo emplea el marco. Nombre adoptado por convención para seleccionar subrecursos de una entidad desde `controller.dk`. |
| `_limit` | Reservado | — |
| `_fields` | Reservado | — |
| `_order` | Reservado | — |
| `_start` | Reservado | — |
| `_method` | Reservado | — |

Los filtros, el orden y la paginación se resuelven en la consulta del modelo. Ver [Filtros, orden y paginación](modelo.md#filtros-orden-y-paginación).

## Campos de control de la carga útil

Todo campo cuyo nombre comience con `---` se mueve de la carga útil a los parámetros antes de que el modelo reciba los datos.

| Campo | Descripción |
|---|---|
| `---from_url` | URL de retorno para la redirección PRG. |
| `---from_url_e` | URL de retorno codificada. |
| `---{cualquiera}` | Disponible como parámetro; no llega al modelo. |

Ver [Patrón PRG y redirección](prg-y-redireccion.md#campos-de-control).

## Variables globales del punto de entrada

| Variable | Predeterminado | Descripción |
|---|---|---|
| `@path_root` | `""` | Ruta física del sitio Web. |
| `@base_path` | `""` | Ruta relativa de las carpetas de entidades. |
| `@dbmvc_path` | `"crudl/"` | Ubicación de los archivos compartidos del marco. |
| `@db_engine` | `"MY_SQL"` | Tipo de gestor de base de datos. |
| `@crudl.qname` | `""` | Nombre cualificado de la conexión. |
| `@crudl.user` | `""` | Usuario, solo para conexión constante. |
| `@crudl.pwd` | `""` | Contraseña, solo para conexión constante. |
| `@crudl.access_privilege` | manifiesto de `workspace` | Privilegios exigidos para la suplantación de identidad. |
| `@ws` | de la URL | Espacio de trabajo. |
| `@list_view` | `"list.dk"` | Nombre de la vista de lista. |
| `@form_view` | `"form.dk"` | Nombre de la vista de formulario. |
| `@error_view` | `"error.dk"` | Nombre de la vista de error. |
| `@dkl_view_ext` | `".dk"` | Extensión asumida para vistas DKL. |
| `@websencia_ext` | `".jsnwm"` | Extensión asumida para archivos de Websencia. |
| `@entity_id_blank` | `"_new"` | Valor que indica entidad nueva. |
| `@crudl_routes_json` | `"routes.json"` | Nombre del archivo declarativo de rutas. |
| `@url_redir` | `""` | Plantilla de URL de redirección. |
| `@path_template_protected` | `_protected/default.htt` | Plantilla envolvente. |
| `@auto_crud` | `@true` | Admite entidades sin `model.dk` propio. |

## Variables globales del modelo

| Variable | Predeterminado | Descripción |
|---|---|---|
| `@table_name` | `""` | Tabla subyacente. Si está vacía se usa `_entities_type`. |
| `@keyfield` | `"sys_pk"` | Campo clave. `_key` tiene prioridad. |
| `@read_query` | ver [modelo](modelo.md) | Consulta de la operación READ. |
| `@get_sys_pk` | ver [modelo](modelo.md) | Consulta que resuelve la clave primaria desde una clave alterna. |
| `@list_query` | ver [modelo](modelo.md) | Consulta de la operación LIST. |
| `@create_fields` | `"*"` | Campos a establecer en el alta. |
| `@update_fields` | `"*"` | Campos a establecer en la modificación. |
| `@create_exclude_fields` | `""` | Campos excluidos del alta. |
| `@update_exclude_fields` | `""` | Campos excluidos de la modificación. |
| `@create_alias_fields` | `""` | Pares `alias:campo` para el alta. |
| `@update_alias_fields` | `""` | Pares `alias:campo` para la modificación. |
| `@use_transaction` | `@true` | Transacción para operaciones con dependientes. |
| `@childs` | vacío | Tablas dependientes. Ver [maestro-detalle](maestro-detalle.md). |

## Punteros de función del modelo

Se establecen con `point ... to`. Un puntero nulo produce `404 Operación no admitida`.

| Puntero | Firma | Devuelve |
|---|---|---|
| `@create` | `&db, &params, &data` | Entidad creada, completa |
| `@read` | `&db, &params` | Entidad solicitada |
| `@update` | `&db, &params, &data` | Entidad actualizada, completa |
| `@delete` | `&db, &params` | Nulo |
| `@list` | `&db, &params` | Lista de entidades |
| `@blank` | `&db, &params` | Elemento vacío o con predeterminados |
| `@custom_delete` | `&db, table_name, sys_pk` | — |

## Punteros de función de la vista

| Puntero | Firma | Descripción |
|---|---|---|
| `@view_controller` | `operation, &params` | Establece `@success_view` y `@fail_view`. |
| `@success_view` | `&params, &input_data, &output_data, &error_info` | Vista de éxito. |
| `@fail_view` | `&params, &input_data, &output_data, &error_info` | Vista de error. |

## Miembros de `@crud_context`

| Miembro | Descripción |
|---|---|
| `output` | Datos de salida. Se sustituye por `input` cuando hay error. |
| `.` | Alias de `output`. |
| `input` | Datos de entrada de la operación. |
| `parameters` | Parámetros de la solicitud, incluido `_operation`. |
| `error` | Nulo, o el objeto de error. |
| `database` | Conexión a la base de datos. |
| `http` | El objeto `@http_context` completo. |
| `script` | Texto del script asociado a la vista. |

## Objeto de error

```json
{ "message": "Texto del error" }
```

## Códigos de estado HTTP

| Código | Situación |
|---|---|
| `200` | CREATE, READ, UPDATE y LIST realizadas |
| `204` | DELETE realizada |
| `302` | Redirección PRG en modo HTML |
| `404` | Elemento no encontrado; entidad no definida; operación no admitida; identidad no indicada |
| `500` | Vista no disponible; error de base de datos; error no clasificado |

Desde un modelo propio puede producir cualquier código igual o mayor que `400` mediante `rise_error`. Por ejemplo, `423` cuando una entidad con bloqueo pesimista se encuentre bloqueada por otro usuario.

## Funciones de configuración y enrutamiento

Disponibles tras incluir `crudl/crudl.dk`.

| Función | Descripción |
|---|---|
| `crudl.load_config()` | Carga el archivo `.crudl`. |
| `crudl.loadRoutesJSON()` | Carga el archivo declarativo de rutas. |
| `crudl.routes.pattern(patrón)` | Declara los nombres de parámetros que forman la ruta lógica. |
| `crudl.routes.entity(ruta, entidad)` | Compara la ruta y asigna `_entities_type`. Devuelve `1` o `0`. |
| `crudl.route(ruta)` | Compara la ruta sin asignar entidad. |
| `crudl.database()` | Devuelve la conexión del proveedor de identidades, o nulo. |
| `crudl.config_file(ruta)` | Resuelve la ubicación del archivo `.crudl`. |

## Funciones del modelo genérico

| Función | Descripción |
|---|---|
| `entity.child(table, join, select_query)` | Describe una tabla dependiente. |
| `entity.safe_id(id)` | Filtra un identificador antes de interpolarlo. |
| `entity.remove_fields(&data, &lista)` | Retira campos de un registro. |

## Funciones específicas del motor

Deben implementarse por motor si se emplea la suplantación de identidad.

| Función | Descripción |
|---|---|
| `dbr.check_alter_access(&user)` | Verifica el manifiesto de `@crudl.access_privilege`. |
| `dbr.alter_id(qname, uid, uname, ids)` | Devuelve una conexión bajo la identidad indicada. |

## Documentos relacionados

* [Instalación y configuración](instalacion.md)
* [Implementación del modelo](modelo.md)
* [Implementación de las vistas](vistas.md)
* [Web services REST](rest.md)
