# Instalación y configuración [← Volver al índice](../crudl.md) Este marco se encuentra en el repositorio https://github.com/Induxsoft/dkl-web ## Archivos del marco De manera predeterminada, los archivos compartidos deben estar en una carpeta llamada `crudl` directamente en la raíz de binarios de Devkron (junto a la carpeta `web` o `fastcgi`). Estos archivos se usan por todos los sitios Web gestionados por la instancia. | Archivo | Propósito | |---|---| | `crudl.dk` | Biblioteca de funciones de configuración y enrutamiento. Se incluye desde el punto de entrada. | | `controller.dkl` | Controlador principal. Determina la operación, selecciona modelo y vista, y devuelve la respuesta. | | `entity.dk` | Modelo genérico. Implementa las operaciones CRUD-L sobre tablas con el patrón de diseño de Devkron. | | `view.dk` | Vista genérica. Resuelve la ubicación de las vistas y produce la salida JSON. | | `error.dk` | Vista de error predeterminada para salida HTML. | | `form.dk` | Vista de formulario predeterminada. | | `list.dk` | Vista de lista predeterminada. | | `websencia.dk` | Renderiza vistas creadas con Websencia (páginas en formato JSON). | | `mysql.dbr.dkh` | Funciones específicas para MySQL, incluida la suplantación de identidad. | `form.dk`, `list.dk` y `error.dk` son implementaciones mínimas destinadas a que un CRUD-L funcione desde el primer momento sin escribir vistas. Producen una salida de diagnóstico, no una interfaz de usuario. Debe sustituirlas por vistas propias en la carpeta de cada entidad, o por vistas comunes en la ruta indicada por `@base_path`. Ver [Implementación de las vistas](vistas.md). ## El punto de entrada `entry-point.dkl` es el punto de entrada del controlador y debe colocarse dentro de la carpeta del sitio Web o del sistema que lo va a emplear, de modo que sus configuraciones sean exclusivas. Estructura mínima: ``` #include "dkli.dkh" #! module "Controller configs" { #include "functions.dkh" #include "serialize.dkh" #include "dbr.dkh" #include "crudl/crudl.dk" // Configuración de rutas y variables globales do crudl.load_config() do crudl.loadRoutesJSON() #include "crudl/controller.dkl" } ``` El orden importa. `crudl.dk` debe incluirse antes de llamar a sus funciones, y `controller.dkl` debe ser lo último, porque su cuerpo se ejecuta al ser incluido. ## Variables globales del punto de entrada ### Rutas ``` // Ruta física del sitio Web @path_root = "web/nombre_host" // Ruta relativa donde se encuentran las carpetas de las entidades @base_path = "ruta/relativa/entidades" // Ubicación de los archivos compartidos del marco @dbmvc_path = "crudl/" ``` La ruta de búsqueda de las entidades se forma concatenando `@path_root` y `@base_path`. ### Conexión ``` // Nombre cualificado de la conexión a la base de datos @crudl.qname = "conexion@aplicacion" // Credenciales, únicamente para el modo de conexión constante @crudl.user = "Nombre del usuario" @crudl.pwd = "Contraseña del usuario" ``` Si no se define `@crudl.qname`, la conexión puede pasarse por la URL mediante los parámetros `_app_group` y `_connection`. Ver [Conexión a la base de datos y sesión](conexion-y-sesion.md). ### Motor de base de datos ``` @db_engine = "MY_SQL" ``` El valor predeterminado es `MY_SQL`. Ver [Otros motores de base de datos](#otros-motores-de-base-de-datos) al final de este documento. ### Vistas ``` // Nombres de las vistas predeterminadas @list_view = "list.dk" @form_view = "form.dk" @error_view = "error.dk" // Extensión asumida si el nombre de la vista no la indica @dkl_view_ext = ".dk" // Extensión asumida para archivos de Websencia @websencia_ext = ".jsnwm" ``` ### Comportamiento ``` // Valor del identificador que indica 'entidad nueva' @entity_id_blank = "_new" // Identificador de espacio de trabajo, tomado de la URL @ws = @@(@http_context,"request/get/ws") // Manifiesto de privilegios exigido para la suplantación de identidad @crudl.access_privilege = '{"access":[{"workspace":"' + @ws + '"}]}' ``` ## Estructura de carpetas de una entidad Cada tipo de entidad tiene una carpeta con su nombre bajo `@path_root` + `@base_path`: ``` {@path_root}/{@base_path}/{_entities_type}/ ├── model.dk (opcional) ├── controller.dk (opcional) ├── form.dk (opcional) └── list.dk (opcional) ``` Si no existe `model.dk`, se usa el modelo genérico `entity.dk`. Si no existe `controller.dk`, no se ejecuta ningún controlador específico. Si no existen las vistas, se buscan en la ruta común y después en la carpeta del marco. ## Otros motores de base de datos El controlador incluye `crudl/mysql.dbr.dkh`, que contiene las funciones de suplantación de identidad específicas de MySQL. Para usar otro gestor deberá proporcionar un archivo equivalente que implemente las mismas funciones: | Función | Propósito | |---|---| | `dbr.check_alter_access::&user` | Devuelve `@true` si el usuario de la sesión satisface el manifiesto de `@crudl.access_privilege`. | | `dbr.alter_id::qname, uid, uname, ids` | Devuelve una conexión abierta bajo la identidad indicada, aprovisionando el usuario y la sesión locales si no existen. | Estas funciones solo son necesarias si va a emplear el modo de conexión por suplantación de identidad. Ver [Conexión a la base de datos y sesión](conexion-y-sesion.md). ## Documentos relacionados * [Enrutamiento y enmascaramiento de URL](enrutamiento.md) * [Archivo de configuración `.crudl`](configuracion.md) * [Referencia de parámetros y variables](referencia.md)