versión 2003 (Modificado)
El servidor Web 4D ofrece diferentes URLs y acciones de formularios HTML especiales que permiten implementar diferentes acciones en su base de datos, en modo contextual y modo no contextual.
Estos URLs son los siguientes:
4DMETHOD/, para asociar un objeto HTML a un método de proyecto de su base en modo contextual,
4DACTION/, para asociar un objeto HTML a un método de proyecto de su base en modo no contextual,
4DCGI/, para llamar el Método de base On Web Connection desde un objeto HTML.
Adicionalmente, el servidor Web 4D acepta varios URLs adicionales:
/4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR y /4DWEBTEST, para permitirle obtener información sobre el funcionamiento de su sitio Web 4D. Estos URLs se describen en la sección Information about the Web Site.
/4DWSDL, permite el acceso al archivo de declaración de los Servicios Web publicados en el servidor. Para mayor información, consulte la sección Web Services (Server) commands y el Manual de diseño.
URL 4DACTION/
Sintaxis: 4DACTION/MiMetodo{/Param}
Modo: No contextual. Cuando se llama desde el modo contextual, aborta el proceso de contexto y pasa a modo no-contextual.
Uso: URL o acción de formulario.
Este URL permite asociar un objeto HTML (texto, botón...) a un método de proyecto 4D en modo no contextual. Este enlace será del tipo /4DACTION/MiMetodo/Param donde MiMetodo es el nombre del método de proyecto a ejecutar cuando el usuario hace clic en el enlace y Param un parámetro opcional de tipo Texto pasado al método en $1 (ver el párrafo "Los parámetros Texto pasados a los métodos vía los URLs").
Cuando 4D recibe una petición /4DACTION/MiMetodo/Param, el método de base On Web Authentication (si existe) se llama. Si devuelve True, se ejecuta el método MiMetodo.
4DACTION/ puede estar asociado a un URL en una página Web estática. La sintaxis del URL será de la siguiente forma: <A HREF="/4DACTION/MiMetodo/Param">Hacer algo</A>
El método de proyecto MiMetodo generalmente debe devolver una "respuesta" (envío de una página HTML utilizando SEND HTML FILE o SEND HTML BLOB, etc.). Asegúrese de hacer los procesos tan cortos como sea posible para no bloquear el navegador.
Nota: Un método llamado por 4DACTION no debe llamar a los elementos de interfaz (DIALOG, ALERT...).
Advertencia: Para que un método 4D pueda ejecutarse vía el URL 4DACTION/, debe tener el atributo "Disponible vía 4DACTION, 4DMETHOD y 4DSCRIPT" (deseleccionado por defecto), definido en las propiedades del método. Para mayor información sobre este punto, consulte la sección Connection Security.
Ejemplo
Este ejemplo describe la asociación del URL 4DACTION/ con un objeto HTML imagen con el fin de mostrar dinámicamente una imagen en la página. Inserte la siguiente instrucción en una página HTML estática:
<IMG SRC="/4DACTION/IMGDESDELIB/1000">
El método IMAGENDESDELIB es el siguiente:
C_TEXT($1) `Este parámetro debe ser declarado siempre C_PICTURE($PictVar) C_BLOB($BlobVar) C_LONGINT($Numero) `Recuperamos el número de imagen en la cadena $1 $Numero:=Num(Substring($1;2;99)) GET PICTURE FROM LIBRARY($Numero;$PictVar) PICTURE TO GIF($PictVar;$BlobVar) SEND HTML BLOB ($BlobVar;"Pict/gif")
4DACTION para enviar los formularios
El servidor Web 4D ofrece una posibilidad adicional cuando utiliza formularios "enviados", los cuales son páginas HTML estáticas que envían datos al servidor Web. La acción del formulario debe obligatoriamente comenzar por /4DACTION/NomMetodo.
Nota: Un formulario puede ser enviado por medio de dos métodos (ambos pueden utilizarse con 4D):
POST, generalmente utilizado para añadir datos al servidor Web - en una base de datos,
GET, generalmente utilizado para hacer peticiones al servidor Web - datos que vienen de una base.
En este caso, cuando el servidor Web recibe un formulario enviado, llama al método de proyecto COMPILER_WEB (si existe, ver a continuación), luego llama al Método de base On Web Authentication (si existe). Si devuelve True, se ejecuta el método NomMetodo. 4D analiza los campos HTML presentes en el formulario, recupera sus valores y llena automáticamente las variables 4D con sus contenidos. El campo en el formulario y la variable 4D deben tener el mismo nombre.
Nota: Para mayor información, consulte la sección Binding 4D objects with HTML objects.
La sintaxis HTML a aplicar en el formulario es del siguiente tipo:
Para la definición de la acción del formulario:
<FORM ACTION="/4DACTION/NomMetodo" METHOD=POST>
para definir un campo en un formulario:
<INPUT TYPE=Tipodecampo NAME=Nombredelcampo VALUE="Valorpordefecto">
Para cada campo en el formulario, 4D define el valor del campo para el valor de la variable con el mismo nombre. Para las opciones de formularios (por ejemplo, casillas de selección), 4D asigna el valor 1 a la variable asociada si está seleccionada, de lo contrario 0.
Para las entradas de tipo numérico, 4D convierte el valor del campo de Alfa>Numérico.
Nota: Si un campo de formulario se llama OK (por ejemplo un botón Enviar), la variable sistema OK toma el valor 1 si el valor del campo no está vacío, de lo contrario toma el valor 0.
Ejemplo
En una base Web 4D iniciada y utilizada en modo "no contextual", queremos que los navegadores puedan buscar registros utilizando una página estática HTML. Esta página se llama "buscar.html". La base contiene otras páginas estáticas que le permiten, por ejemplo, mostrar el resultado de la búsqueda ("resultados.html"). El tipo POST ha estado asociado a la página, como también la acción /4DACTION/PROCESARFORM.
Esta es la página como aparece en el editor HTML, en este caso Dreamweaver :
Este es el código HTML que corresponde a esta página:
<FORM NAME="form" ACTION="/4DACTION/PROCESARFORM" METHOD=POST> <P>Por favor digite el nombre que desea buscar</P> <P>Nombre <INPUT TYPE=TEXT NAME="vNOMBRE" VALUE=""></P> <!-- Generalmente colocamos el nombre del botón en VALUE, por razones de interpretación, debe colocar un número en VALUE--> <P><INPUT TYPE=CHECKBOX NAME="vEXACTA" VALUE="1">Palabra exacta</P> <!-- OK es un caso particular--> <P><INPUT TYPE=SUBMIT NAME="OK" VALUE="Buscar"> <INPUT TYPE=RESET NAME="BORRAR" VALUE="Borrar"></P> </FORM>
Durante la entrada de datos, escriba "ABCD" en el área de entrada de datos, revise la opción y valídela haciendo clic en el botón Buscar.
4D luego llama al método de proyecto COMPILER_WEB, que es el siguiente:
C_TEXT(vNOMBRE) vNOMBRE:="" C_LONGINT(vEXACTA) vEXACTA:=0 OK:=0 `caso particular
En el ejemplo, vNOMBRE contiene la cadena "ABCD", vEXACTA es igual a 1 y OK es igual a 1 (porque el nombre del botón es OK).
4D llama al Método de base On Web Authentication (si existe), luego se llama al método de proceso PROCESARFORM, que es el siguiente:
If (OK=1) If (vEXACTA=0) `Si la opción no ha sido seleccionada vNOMBRE:=VNOMBRE+"@" End if QUERY([Jockeys];[Jockeys]Nombre=vNOMBRE) vLIST:=Char(1) `Devuelve la lista en HTML FIRST RECORD([Jockeys]) While (Not(End selection([Jockeys]))) vLIST:=vLIST+[Jockeys]Nombre+" "+[Jockeys]Tel+"<BR>" NEXT RECORD([Jockeys]) End while SEND HTML FILE("resultados.html") `Envío de la lista en el formulario results.htm `que contiene una referencia a la variable vLIST (que es <!--4DVAR vLIST>) ... End if
URL 4DMETHOD/
Sintaxis: 4DMETHOD/MiMetodo{/Param}
Modo: Contextual. Llamado desde el modo no contextual, pasa al modo contextual.
Uso: URL o Acción de formulario.
Este URL le permite asociar un objeto HTML (texto, botón...) a un método de proyecto 4D en modo contextual. El enlace será del tipo /4DMETHOD/Nom_Metodo/Param donde Nom_Metodo es el nombre del método de proyecto 4D a ejecutar cuando el usuario hace clic en el objeto HTML y Param un parámetro opcional de tipo Texto pasado al método en $1 (ver el párrafo "Los parámetro Texto pasados a los métodos vía los URL" ). El elemento asociado provoca la ejecución del método de proyecto 4D por medio de sus URLs. El método de proyecto por si mismo puede mostrar formularios 4D, otras páginas HTML, etc.
Cuando 4D recibe una petición /4DMETHOD, se llama al Método de base On Web Authentication (si existe). Si devuelve True, se llama al Método de base On Web Connection (si existe), luego se ejecuta el método Nom_Método con la cadena /Param como parámetro (en $1).
Si asigna /4DMETHOD/Nom_Metodo como acción del formulario para una página HTML estática, el método se ejecuta cuando el usuario hace clic en un botón Enviar en el formulario HTML. Consulte el ejemplo del comando SEND HTML FILE.
Cuando integra las páginas HTML en 4D, por lo general utiliza los botones del tipo normal o submit.
La sintaxis HTML a aplicar en el formulario es del tipo siguiente:
<FORM ACTION="/4DMETHOD/MethodName" METHOD=POST>
Para mayor información sobre formularios enviados, consulte el párrafo anterior.
Advertencia: Para que un método 4D pueda ser ejecutado utilizando el URL 4DMETHOD/, debe tener el atributo "Disponible vía 4DACTION, 4DMETHOD y 4DSCRIPT" (deseleccionado por defecto), definido en las propiedades del método. Para mayor información sobre este punto, consulte la sección Connection Security.
URL 4DCGI/<action>
Sintaxis: 4DCGI/<action>
Modo: Ambos.
Uso: URL.
Cuando el servidor Web 4D recibe el URL /4DCGI/<action> se llama el Método de base On Web Authentication (si existe). Si devuelve True, el servidor Web llama al Método On Web Connection enviando el URL "tal cual" a $1.
El URL 4DCGI/ URL no corresponde a ningún archivo. Su papel es llamar 4D utilizando el Método de base On Web Connection. El parámetro "<action>" puede contener todo tipo de información.
Este URL le permite efectuar todo tipo de acción. Sólo necesita probar el valor de $1 en el Método de base On Web Connection o en uno de sus submétodos y realizar en 4D la acción apropiada. Por ejemplo, puede crear páginas HTML estáticas totalmente personalizadas para añadir, buscar, u ordenar registros, o generar imágenes GIF rápidamente. Ejemplos de cómo utilizar este URL se encuentran en las descripciones de los comandos PICTURE TO GIF y SEND HTTP REDIRECT.
Después de una acción, debe devolverse una "respuesta", utilizando uno de los comandos de envío de datos (SEND HTML FILE, SEND HTML BLOB, etc.).
Advertencia: Por favor asegúrese de ejecutar las acciones más cortas posibles, con el fin de no bloquear el navegador.
Los parámetros de texto pasados a los métodos 4D llamados vía los URLs
4D envía los parámetros de Texto a los métodos 4D llamados por los URLs especiales (4DMETHOD/, 4DACTION/ y 4DCGI/), en modos contextual y no contextual. He aquí algunas observaciones sobre estos parámetros:
Aunque usted no utiliza estos parámetros, debe declararlos explícitamente con el comando C_TEXT, de lo contrario se producirán errores runtime cuando acceda por Web a una base ejecutada en modo compilado.
El parámetro $1 devuelve los datos adicionales ubicados al final del URL, y pueden ser utilizados para pasar los datos del entorno HTML al entorno 4D.
Errores runtime en modo compilado
Consideremos el siguiente ejemplo. Usted ejecuta un método asociado a un objeto HTML utilizando un enlace y obtiene la siguiente pantalla en su navegador Web:
Este error runtime está relacionado con la ausencia de declaración del parámetro texto $1 en el método 4D llamado cuando usted hace clic en el enlace HTML. Como el contexto de la ejecución es la página HTML actual, el error hace referencia a la "línea 0" del método que ha enviado a la página al navegador Web.
Siguiendo el ejemplo de la sección Your First Time with the Web Server, el parámetro de tipo texto $1 se declara explícitamente dentro de los métodos M_ADD_RECORDS y M_LIST_RECORDS:
`Método de proyecto M_ADD_RECORDS C_TEXT($1) ` Este parámetro DEBE declararse explícitamente Repeat ADD RECORD([Clientes]) Until(OK=0) ` Método de proyecto M_LIST_RECORDS C_TEXT($1) ` Este parámetro DEBE declararse explícitamente ALL RECORDS([Clientes]) MODIFY SELECTION([Clientes])
Después de efectuar estos cambios, los errores runtime en modo compilado no se presentan más.
Parámetros a declarar explícitamente en el método llamado
Debe declarar diferentes parámetros en función del origen y de la naturaleza de la llamada del método 4D.
Método de base On Web Authentication y Método de base On Web Connection
Debe declarar los seis parámetros de la conexión:
` Método de base On Web Connection C_TEXT($1;$2;$3;$4;$5;$6)
Método llamado por el URL 4DMETHOD/
Debe declarar el parámetro $1:
` Método llamado por el URL 4DMETHOD/ C_TEXT($1)
Método llamado por el URL 4DACTION/
Debe declarar el parámetro $1:
` Método llamado por el URL 4DACTION/ C_TEXT($1)
Método llamado por etiqueta 4DSCRIPT/ como un comentario HTML en un documento
El método debe devolver un valor en $0. Debe declarar el parámetro $0 y $1:
` Método llamado por la etiqueta 4DSCRIPT/ como un comentario HTML C_TEXT($0; $1)
Ver también
Asociar objetos 4D a objetos HTML , GET WEB FORM VARIABLES, Su primera vez con el servidor Web, Utilizar el modo contextual .