The online documentation is produced by a web publishing technology created by us to read the documents origins in OpenOffice Writer (ODT) and Microsoft Word (docx) formats and produces native web and PDF versions. In this way we maintain Louder project documentation update and in sync on each of its formats.
Este componente actua como una biblioteca de etiquetas que permite generar tags XHTML en la presentación de una aplicación mediante métodos estáticos PHP predefinidos flexibles que integran tecnología del lado del cliente como CSS y Javascript.
La ventaja de utilizar estos helpers en lugar de XHTML puro, es que acelera el desarrollo y hace consistente el código XHTML y otros aspectos como las URLs y el convencionalismo del framework.
Cada método estático recibe sus opciones mediante parámetros por nombre que se pueden enviar en cualquier orden al mismo. En los tag que generan etiquetas es posible enviar parámetros XHTML ó CSS con su respectivo valor asignandose a la etiqueta generada.
Establecer el valor de helpers creados con Tag
Una de las ventajas más importantes de crear componentes de interfaz de usuario con Tag es lo sencillo que se puede asignar el valor de estos de forma uniforme y controlada.
Cada componente localiza el valor que debe presentar mediante las siguientes reglas. Si alguna regla se cumple las demás no son validadas:
Verifica si existe algún valor para él asignado con Tag::displayTo y lo toma como valor
Verifica si hay algún indice en $_POST que coincida con el atributo "id" de él y toma como valor
Verfica si existe un atributo público en el último controlador ejecutado que coincida con el atributo "id" de él y lo toma como valor.
Si a algún helper se le asigna directamente con el parámetro "value" ninguna de las reglas anteriores se tiene en cuenta.
El siguiente ejemplo ilustra la asignación de un valor a componente de interfaz de usuario creado mediante Tag:
Ejemplo: Mostrar un valor en un componente visual desde el controlador mediante Tag::displayTo
<?php
class PeopleController extends ApplicationController {
public function indexAction(){
Tag::displayTo('genero', 'F');
}
}
En la vista el como estático se visualizará con el valor "F" seleccionado:
El desarrollador debe validar que no se asignen valores con displayTo cuando se deba visualizar los valores capturados por el usuario en la petición POST.
Comportamiento de helpers
Todos los helpers en el componente Tag devuelven código HTML generado por cada uno lo que permite utilizar este para utilizarlo como parámetro de otros helpers ó usarlo como se requiera.
public static function linkTo(mixed $params) Permite crear un enlace a una punto de la aplicación utilizando las convenciones de Kumbia Enterprise; este método genera un tag A de XHTML con la posibilidad de implementar tanto una confirmación antes de ejecutarse como de aplicar cualquier atributo que se desee a este tag. El label de la etiqueta puede ser un texto ó cualquier otro tag como por ejemplo una imagen.
Las opciones extendidas del componente son:
Tabla: Parámetros que recibe linkTo
Nombre
Descripción
confirm
Permite establecer que se presente un cuadro de dialogo de presentación al usuario que confirme la petición de la URL en el tag A.
<?php echo Tag::linkTo("controlador/saludo","SALUDAR", "class: css_saludo", "border: 0", "confirm: Desea ir a Saludo?") ?>
Genera el siguiente código XHTML:
<a onclick='if(!confirm("Desea ir a saludo?")) return false;' border="0" class="css_saludo" href="/instancia/controlador/saludo">SALUDAR</a>
public static function linkToAction(mixed $params) Genera un enlace a una acción asociada al controlador actual. Al igual que linkTo es posible aplicar atributos HTML pasandolos como otros parámetros.
Permite establecer que se presente un cuadro de dialogo de presentación al usuario que confirme la petición de la URL en el tag A.
text
Es el texto que aparecerá en el enlace.
public static function linkToRemote(mixed $params) Carga el contenido de una acción en un contenedor HTML dentro de la presentación actual. La vista se obtiene mediante AJAX por lo que la página no es recargada.
En el siguiente ejemplo se cargará el contenido de una acción en el div con id 'the_menu':
Ejemplo: Uso del helper linkToRemote
<div id='the_menu'></div>
<?php echo Tag::linkToRemote('main/getMenu', 'Texto del Enlace', 'the_menu') ?>
Como la presentación es parcial se debe modificar la salida del controlador para solo mostrar la vista asociada y saltar los templates ó layouts.
<?php
class MainController extends ApplicationController {
public function indexAction(){
}
public function getMenuAction(){
$this->setResponse('ajax');
}
}
También es posible implementar eventos AJAX a medida que se procesa la petición mejorando la experiencia de usuario:
Permite establecer que se presente un cuadro de dialogo que confirme la petición de la URL.
text
Es el texto que aparecerá en el enlace. Si no se establece el segundo parámetro del enlace es tomado.
update
Es el contenedor HTML donde se presentará el contenido de la vista.
onLoading
Código JavaScript a ejecutar antes de realizar la petición HTTP interna.
onSuccess
Código JavaScript a ejecutar cuando la petición se completa con éxito. El objeto con la el resultado petición puede obtenerse usando la variable 'transport'.
onComplete
Código JavaScript a ejecutar cuando la petición se completa. El objeto con la el resultado petición puede obtenerse usando la variable 'transport'.
onFailure
Código JavaScript a ejecutar cuando la petición falla ó se genera una excepción. El objeto con la el resultado petición puede obtenerse usando la variable 'transport'. En este mismo evento se carga el contenido de la presentación en el contenedor.
asynchronous
Permite establecer si la petición es asincronica ó sincrónica. Se debe establecer un valor booleano true ó false. Por defecto es false.
Adicional a lo anterior linkToRemote acepta como parámetro cualquier nombre de atributo aplicable a la etiqueta A.
Componentes de interfaz de usuario
public static function textField(mixed $params) Crea una caja de texto con los parámetros establecidos.
El helper textArea acepta como parámetro cualquier nombre de atributo aplicable a la etiqueta textarea.
public static function numericField(mixed $params) Crea una caja de texto con los parámetros establecidos validando que su entrada sea solo valores numéricos.
Ejemplo: Uso del helper Tag::numericField
<?php echo Tag::numericField("accountNumber") ?>
El helper numericField acepta como parámetro cualquier nombre de atributo aplicable a la etiqueta input type="text".
public static function numericPasswordField(mixed $params) Crea una caja de texto para contraseñas con los parámetros establecidos validando que su entrada sea solo valores numéricos. Este componente debe ser usado en casos especiales de confianza ya que su naturaleza ayudaría a un tercero malintencionado a conocer que el password solicitado es un algún valor numérico.
Indica que se debe colocar una opción adicional 'Seleccione…' al prinicipio de la lista. El valor de este es una '@'.
dummyValue
Permite cambiar el valor de la opción Dummy de '@' al valor indicado.
dummyText
Permite cambiar el texto de la opción Dummy de 'Seleccione…' al texto indicado.
Adicional a lo anterior selectStatic acepta como parámetro cualquier nombre de atributo aplicable a la etiqueta SELECT.
public static function select(mixed $params) Permite generar una lista desplegable mediante un array, un ActiveRecordResultset (resultado de ActiveRecord) ó un ActiveRecordRow (resultado de ActiveRecordJoin):
El primer parámetro de este helper es el id/name que tomará la lista. El segundo son los datos de la lista. Cuando se usa un ActiveRecordResultset ó ActiveRecordRow se debe establecer el parámetro using, el cuál es una pareja de atributos que será utilizada como valor/texto de cada opción de la etiqueta SELECT generada.
Opciones de select:
Tabla: Parámetros recibidos por Tag::select
Nombre
Descripción
useDummy
Indica que se debe colocar una opción adicional 'Seleccione…' al prinicipio de la lista. El valor de este es una '@'.
dummyValue
Permite cambiar el valor de la opción Dummy de '@' al valor indicado.
dummyText
Permite cambiar el texto de la opción Dummy de 'Seleccione…' al texto indicado.
Adicional a lo anterior select acepta como parámetro cualquier nombre de atributo aplicable a la etiqueta SELECT.
public static function localeSelect() Es identico al helper select pero en este se aplica una función de localización a cada texto de las opción mediante un objeto de traducción.
El siguiente ejemplo muestra los idiomas disponibles basado en un objeto de traducción:
Las opciones adicionales de selectStatic y select también aplican a selectMixed.
public static function submitImage($caption, $src) Permite crear un botón de envío de formulario con una imagen en vez de un texto. Recibe como parámetros "caption" que contendrá el texto que aparece en caso de que la imágen no pueda ser cargada. "src" especifica la ruta de la imagen.
Recibe además los cualquier evento que pueda definirse para el botón con su correspondiente acción en javascript.
public static function image($img) Incluye una imagen en una vista teniendo en cuenta el direccionamiento de los directorios del framework. El parámetro "img" define el nombre de la imagen que debe estar incluida dentro de la carpeta 'img'.
public static function formRemote($params) Permite generar un formulario remoto, que será enviado con una petición de Ajax. El parámetro "params" permite ingresar una serie de opciones para el helper.El primer parámetro ingresado es el que define el valor de la propiedad action para la etiqueta 'form'.
Valor que tendrá la propiedad 'action' del formulario.
complete
Callback que contendrá el codigo javascript que se ejecutará una vez se active el evento complete del formulario.
befote
Callback que contendrá el codigo javascript que se ejecutará antes de que el formulario sea enviado.
success
Callback que contendrá el codigo javascript que se ejecutará una vez se active el evento success del formulario.
required
Colección de campos que son requeridos para el formulario, ocurre una validación de dichos campos antes de hacer el envío.
update
Id de la etiqueta que será actualizada una vez se complete el envío.
public static function submitRemote($caption) Crea un botón de envío para el formulario remoto actual. El parámetro "caption" define el texto que se muestra en el botón.
Callback que contendrá el codigo javascript que se ejecutará una vez se active el evento complete del formulario.
before
Callback que contendrá el codigo javascript que se ejecutará antes de que el formulario sea enviado.
success
Callback que contendrá el codigo javascript que se ejecutará una vez se active el evento success del formulario.
update
Id de la etiqueta que será actualizada una vez se complete el envío.
public static function form($action) Crea una etiqueta de apertura de un formulario. El parámetro "action" es el valor de la propiedad 'action' del formulario.
Valor que tendrá la propiedad 'action' del formulario.
method
Método que será usado para el envío del formulario.
confirm
Si es declarado define el mensaje de confirmación para el envío del formulario.
onsubmit
Callback que contendrá el codigo javascript que se ejecutará una vez se active el evento submit del formulario.
public static function endForm() Etiqueta que finaliza el formulario, corresponde al codigo de cierre de dicha etiqueta.
Ejemplo: Uso del helper Tag::endForm()
<?php echo Tag::endForm() ?>
Genera el siguiente codigo XHTML:
</form>
public static function submitButton($caption) Permite crear un botón de envío para el formulario actual. Ingresa como parámetro el valor del texto que será mostrado en el botón. Además recibe cualquier atributo que pueda ser aplicable a una etiqueta input type='submit'.
public static function setMeta(string $name, string $content) Carga en memoria una etiqueta Meta para las cabeceras del documento HTML. Recibe el nombre de la etiqueta y un contenido para la misma.
Ejemplo: Uso del helper Tag::setMeta
<?php echo Tag::setMeta('description','Busqueda de usuarios.') ?>
public static function getMetas() Imprime las etiquetas Meta que han sido cargadas previamente. No recibe parámetros e imprime automáticamente el resultado en el documento HTML.
Ejemplo: Uso del helper Tag::getMetas()
<?php Tag::getMetas() ?>
Tratamiento e Inclusión de archivos CSS
public static function stylesheetLink(string $src='', $useVariables=false) Adiciona una etiqueta de link que incluye un archivo CSS teniendo en cuenta las rutas que se definen en Kumbia Enterprise. El primer parámetro constituye la ruta de ubicación del archivo CSS, el segundo determina si se usará un traductor de las variables globales que se pueden especificar en los archivos CSS.
Para aumentar el rendimiento del reemplazo de variables en archivos CSS estos se cachean en el directorio temp/ y se refrescan cuando se detecta cambios en ellos.
public static function removeStylesheets() Remueve los tags de css agregados.
Componentes para fechas
public static function dateField(mixed $params) Permite validar que los dato capturado sea una fecha. Este helper crea 3 listas una para los meses, días y otra para los años. Los nombres de los meses se muestran en el idioma de la localización activa. El valor capturado se almacena en un input oculto con el nombre del dateField.
Ejemplo: Uso de helper Tag::dateField
<?php echo Tag::dateField("fechaInicial") ?>
Por defecto dateField muestra la fecha 1 de enero del año en curso, sin embargo esta fecha no es válida.
Opciones de dateField:
Tabla: Parámetros que acepta Tag::dateField
Nombre
Descripción
startYear
Indica el año menor que tendrá la lista año.
finalYear
Indica el año mayor que tendrá la lista año.
useDummy
Indica si se debe forzar al usuario a seleccionar un valor valido.
Adicional a lo anterior dateField acepta como parámetro cualquier nombre de atributo aplicable a la etiqueta table.
public static function localeDateField(mixed $params, Traslate $traslate) Es identico a dateField pero los nombres de los meses son tomados de la lista de localización actual permitiendo mostrarlos varios idiomas.
El helper localeDateField acepta como parámetro cualquier nombre de atributo aplicable a la etiqueta table.
Incluir recursos Javascript
public static function javascriptInclude(string $src='', boolean $cache=true) Permite insertar una etiqueta <script> con la referencia a un archivo javascript de la instancia actual. La extensión .js debe ser omitida ya que el helper la agrega automáticamente.
Cuando se pasa false en el segundo parámetro se agrega a la URL del HTML generado el parámetro GET nocache=valor donde valor es un entero aleatorio entre 0 y 999999. De esta forma se obliga al navegador a recargar el recurso javascript en cada petición.
Ejemplo: Uso del helper Tag::javascriptInclude con cache
Si se omite el nombre del JavaScript se trata de insertar un archivo con el mismo nombre del controlador actual.
public static function javascriptMinifiedInclude(string $src='') Permite insertar un javascript minimizado con JsMin. El parámetro $src es la ubicación del archivo en el servidor una versión pública es generada la cuál es regenerada cada vez que se modifica el archivo original. Los archivos javascript minimizados consumen menor ancho de banda y pueden aumentar la velocidad de carga de la aplicación en clientes con velocidades de conexión reducidas.
Ejemplo: Uso del helper Tag::javascriptMinifiedInclude
El directorio public/javascript debe tener permisos de escritura para usar este helper.
Interacción con la presentación
static function void displayTo(string $id, string $value) Establece el valor para un componente visual del formulario que se va a presentar en la petición actual. El valor definido mediante este helper tiene mayor prioridad cuando se trata de obtener el valor de los componentes visuales.
static function mixed getValueFromAction(string $name) Permite obtener el valor que será presentado en un componente visual como lo es una caja de texto ó una lista (combo). Todos los helpers realizan un llamado interno usando este método para obtener el valor a presentar dependiendo la naturaleza de cada uno.
Los valores son obtenidos en este orden:
Se verifica si existe algún valor para él asignado con Tag::displayTo y lo toma como valor
Se verifica si hay algún indice en $_POST que coincida con el atributo "id" de él y toma como valor
Verfica si existe un atributo público en el último controlador ejecutado que coincida con