Campo de formulario
From Joomla! Documentation
Introducción
Los campos de formulario son los campos en un <form>
HTML. Joomla! 2.5 y más reciente proporciona la clase JForm como una forma cómoda y flexible de crear formularios con una gran cantidad de campos. Cada tipo de campo de formulario es una subclase de JFormField.
Además de ser una herramienta para la creación de página flexibles, JFormFields es utilizado por Joomla! para permitir a los administradores configurar Joomla! o sus extensiones sin necesidad de cambiar el código subyacente. En Joomla! 1.5, esto era manejado por las ahora obsoletas clases JParameter y JElement.
Para definir los campos de formulario en la configuración de una extensión, debe incluirlos en un fieldset llamado, como <fieldset name="basic">
, que está dentro de la etiqueta <fields name="params">
del <config>
en el archivo de manifiesto XML.
== Validación del formulario ==
Joomla tiene capacidades de validación de formularios del lado cliente y del lado servidor.
La validación del lado servidor es mínima ya que todo antes se puede validar del lado cliente. Pero del lado cliente es más fácil de usar, así que usar ambas no es mala idea (sobre todo porque esta última es discreta y no dará problemas en navegadores con JavaScript deshabilitado o clientes problemáticos).
Validación del lado cliente
.. se hace a través de javascript mientras el usuario está llenando los campos del formulario.
Utiliza las clases HTML required y validate-[xxx] (donde [xxx] es una regla de Joomla! o personalizada; por ejemplo, validate-numeric)
Más aquí: Validación de formularios del lado cliente
Validación del lado servidor
.. se hace después de haber enviado el formulario y normalmente vuelve al formulario, cuando no esta validado, con algunos mensajes adicionales.
Utiliza los atributos HTML required y ("true" o "required") y validate (con el valor de una regla joomla o personalizada; por ejemplo, validate="email")
== Campos de formulario, Tipos Estándar ==
Numerosos tipos de campos de formulario están definidos en Joomla!. La siguiente tabla enumera los tipos estándar y su disponibilidad. Usa la referencia de una sola página si deseas imprimir toda la documentación existente de campos de formulario.
por Favor, ten en cuenta que muchos de estos campos están disponibles como tipo parámetro en Joomla! 1.5. Para obtener una lista de tipos parámetros, ver J1.5:Tipos parámetros estándar. Para una comparación entre los campos de formulario y los tipos parámetros, ver Campos de formulario y tipos parámetros estándar.
Tipo | Descripción | Disponibilidad | |
---|---|---|---|
accessiblemedia | provides modal access to the media manager for insertion of images with upload for users with appropriate permissions and a text field for adding a alternative text. | ![]() | |
accesslevel | proporciona una lista desplegable de opciones niveles de acceso con la opción actual seleccionada. | ![]() | |
cachehandler | proporciona una lista de las opciones de manejo disponibles de la memoria caché. | ![]() | |
calendar | proporciona un cuadro de texto para la entrada de una fecha. Un icono situado junto al cuadro de texto proporciona un enlace a un calendario emergente, que también puede ser utilizado para introducir el valor de la fecha. | ![]() | |
captcha | proporciona el uso de un plugin captcha. | ![]() | |
category | proporciona una lista desplegable de categorías para una extensión. | ![]() | |
checkbox | proporciona una casilla de verificación única para ser activada o desactivada | ![]() | |
checkboxes | ofrece una ilimitada cantidad de casillas de verificación que pueden ser utilizadas para una selección múltiple. | ![]() | |
Chrome Style | proporciona una lista de opciones de plantillas de estilo chrome agrupadas por plantilla. | ![]() | |
color | proporciona un selector de color al hacer clic en el cuadro de entrada. | ![]() | |
Content Language | proporciona una lista de los idiomas para contenidos. | ![]() | |
Content Type | proporciona una lista de tipos de contenido. | ![]() | |
combo | proporciona un campo de cuadro combinado desplegable. | ![]() | |
componentlayout | proporciona una lista agrupada de diseños alternativos de núcleos y plantillas para un ítem del componente. | ![]() | |
contentlanguage | proporciona una lista de los idiomas de contenido instalados para su uso en conjunción con el plugin selector de idiomas. | ![]() | |
Database Connection | proporciona una lista de conexiones de base de datos, opcionalmente se limitan a una lista determinada. | ![]() | |
editor | proporciona un campo de área con un editor WYSIWYG. | ![]() | |
editors | proporciona una lista desplegable de los editores WYSIWYG disponibles. Desde ![]() |
![]() | |
proporciona un campo de correo electrónico. | ![]() | ||
file | proporciona un campo de entrada para archivos | ![]() | |
filelist | proporciona una lista desplegable de los archivos de un directorio especificado. | ![]() | |
folderlist | proporciona una lista desplegable de carpetas de un directorio especificado. | ![]() | |
groupedlist | proporciona una lista desplegable de ítems organizados en grupos. | ![]() | |
header tag | proporciona una lista desplegable de las etiquetas de encabezado (h1-h6). | ![]() | |
helpsite | proporciona una lista desplegable de los sitios de ayuda para tu instalación de Joomlaǃ. | ![]() | |
hidden | proporciona un campo oculto para guardar un campo de formulario cuyo valor no pueda ser modificado directamente por el usuario en el Administrador (puede ser modificado por código o mediante la edición del archivo params.ini). | ![]() | |
imagelist | proporciona una lista desplegable de los archivos de imagen en un directorio especificado. | ![]() | |
integer | proporciona una lista desplegable de los enteros entre un mínimo y un máximo. | ![]() | |
language | proporciona una lista desplegable de los idiomas instalados para el Lado Cliente o Lado Servidor. | ![]() | |
list | proporciona una lista desplegable con entradas definidas personalizadas. | ![]() | |
media | proporciona acceso modal al gestor de medios para la elección de imágenes, los usuarios con los permisos adecuados podrán subir archivos. | ![]() | |
menu | proporciona una lista desplegable de menús disponibles en tu sitio Joomlaǃ. | ![]() | |
menuitem | proporciona una lista desplegable de los ítems de menús disponibles en tu sitio Joomlaǃ. | ![]() | |
meter | proporciona una barra de progreso para mostrar el valor en un intervalo. | ![]() | |
modulelayout | proporciona una lista de las alternativas de diseño de un módulo agrupados por núcleo y plantilla. | ![]() | |
moduleorder | proporciona una lista desplegable para establecer el orden del módulo en una posición dada | ![]() | |
moduleposition | proporciona una entrada de texto y el botón para ajustar la posición de un módulo. | ![]() | |
moduletag | proporciona una lista de elementos html5 (que se usa para envolver un módulo). | ![]() | |
note | soporta campo de texto de una línea. | ![]() | |
number | proporciona un cuadro de texto de una línea con controladores arriba/abajo para seleccionar un número en el campo. | ![]() | |
password | proporciona un cuadro de texto para la entrada de una contraseña. Los caracteres de la contraseña serán ocultados a medida que se introducen. | ![]() | |
plugins | proporciona una lista de plugins de una carpeta determinada. | ![]() | |
predefinedlist | Campo de Formulario para cargar una lista de valores predefinidos. | ![]() | |
radio | proporciona botones de radio para seleccionar diferentes opciones. | ![]() | |
range | Proporciona una barra de desplazamiento horizontal para especificar un valor en un rango. | ![]() | |
repeatable | Permite a los campos de formulario que puedan tener tantas opciones como lo desee el usuario. | ![]() | |
rules | proporciona una matriz de grupo con opciones de acción para la gestión del control de acceso. La visualización depende del contexto. | ![]() | |
sessionhandler | proporciona una lista desplegable de las opciones del controlador de sesión. | ![]() | |
spacer | proporciona un separador visual entre los campos del formulario. Es puramente una ayuda visual y no hay ningún valor almacenado. | ![]() | |
sql | proporciona una lista desplegable de entradas obtenidas mediante la ejecución de una consulta a la Base de datos de Joomlaǃ. La primera columna de resultados devueltos por la consulta proporciona los valores para el cuadro de lista desplegable. | ![]() | |
subform | ofrece una forma de usar formularios XML dentro de otro o reutilizar tus formularios existentes en el formulario actual. | ![]() | |
tag | proporciona un punto de entrada para las etiquetas (AJAX o Anidadas). | ![]() | |
tel | proporciona un campo de entrada para un número de teléfono. | ![]() | |
templatestyle | proporciona una lista desplegable de plantillas de estilos. | ![]() | |
text | proporciona un cuadro de texto para la entrada de datos. | ![]() | |
textarea | proporciona un área de texto para la entrada de texto de varias líneas. | ![]() | |
timezone | proporciona una lista desplegable de zonas horarias. | ![]() | |
URL | proporciona campo de entrada de texto para una dirección URL. | ![]() | |
user | proporciona una lista desplegable para seleccionar un usuario. Muestra el Nombre del Usuario y almacena el ID de Usuario | ![]() | |
useractive | proporciona un campo para mostrar una lista de usuarios disponibles en estado activo. | ![]() |
|
usergroup | proporciona una lista desplegable de los grupos de usuarios. Desde ![]() |
![]() |
|
usergrouplist | proporciona una lista desplegable de grupos de usuarios. Desde Desde ![]() |
![]() |
|
userstate | proporciona un campo para mostrar una lista de los estados disponibles de usuarios. | ![]() |
== Campos de formulario tipo personalizados ==
Una extensión puede definir sus propios campos de formulario tipo, que luego pueden ser utilizados en sus propis formularios o formularios creados por otra extensión. Ver Crear un campo de formulario de tipo personalizado para obtener instrucciones.
== Campos de formulario, Tipo Modal ==
Si tienes un campo con muchos valores que no encajan en un cuadro de selección, siempre puedes hacer un campo de formulario modal que va a permitir al usuario seleccionar un elemento de una página modal con una tabla, opciones de filtrado, etc. (al igual que cualquier tabla del administrador, por ej.ː "Artículos").
Ver S:MyLanguage/Creating a modal form fieldlCrear un campo de formulario modal
== Atributos comunes == === Labelclass ===
Agregar el atributo labelclass
adiciona una clase CSS para las etiquetas del campo de formulario. Fuente:
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28450
=== Showon ===
Agregar el atributo showon
permite ocultar el campo basados en el(los) valor(es) de otro campo.
Sintaxis para mostrar el campo bar solo cuando foo es igual a "1":
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1"
/>
Para hacer coincidir multiples valores, estos deben ser separados por comas, como en el siguiente ejemplo: showon="foo:1,2"
Para combinar múltiples campos puedes usar [AND]
. Ejemplo: showon="foo:1[AND]bar:1"
La sintaxis para mostrar el campo bar sólo cuando foo es igual a "1" y baz es igual a "1":
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1[AND]baz:1"
/>
Si desea escoger entre varios valores, se puede utilizar [OR]. Ejemplo: showon="foo:1[OR]bar:1".
La sintaxis para mostrar el campo bar solo cuando foo es igual a "1" o baz es igual a "1";
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="bar"
type="text"
showon="foo:1[OR]baz:1"
/>
También puedes usar el valor no es igual a showon="field1!:1".
Sintaxis para mostrar el campo "bar" solo cuando "foo" no es igual a "1":
<field
name="foo"
type="list"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="baz"
type="list"
showon="foo!:1"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
Para mostrar un campo cuando otro campo (por ejemplo, foo) ha sido seleccionado (por lo tanto, cuando ese otro campo no está vacío), puede usar showon="foo!:" (sin un valor especificado).
Esto fue introducido con PullRequest: https://github.com/joomla/joomla-cms/pull/3379, disponible a partir de Joomlaǃ 3.2.4.
Troubleshooting: Attributes Not Working
If you have read an older version of our developer documentation, or took your form display code from an existing extension, you may be experiencing issues with attributes like showon not working at all. In order for some special attributes to function, your fields must be rendered using their renderField() method. For example:
<div class="row-fluid">
<div class="span6">
<?php
foreach($this->form->getFieldset() as $field) {
echo $field->renderField();
}
?>
</div>
</div>