Imprimir

Form

Genera un completo formulario html. Incluye elementos de formulario, bloques para agrupar esos elementos, botones de acción y una caja, que puede utilizar pestañas y manejar la asincronía.

 

Ejemplo inicial

El siguiente ejemplo crea un formulario para ingresar un usuario y una contraseña. A cada elemento se le agregó su etiqueta.

$form = Form::get();
$form->input('user')->setLabel('User');
$form->input('password', ['type' => 'password'])->setLabel('Password');

echo $form->render();

 

Elementos de formulario

En ocaciones, no queremos utilizar el formulario del framework, o, simplemente, necesitamos sólo los elementos de formulario. Para estos casos, es posible utilizar el fragmento que sólo crea los elementos de formulario y que implementa la interface FormElementsInterface.

$felem = Form::getElements();
echo $felem->input('search', ['icon' => 'fa-solid fa-magnifying-glass']);

 

FormElementsInterface::setValues

Establece los valores de todos los elementos, debe agregarse antes de todo.

public FormElementsInterface::setValues( ?array $values = null ): void;
values

Un arreglo con todos valores a establecer.

 

FormElementsInterface::setDeep

Establece una profundidad en el nombre de los elementos. Generalmente se utiliza cuando un elemento es colocado dentro de un bucle.

public FormElementsInterface::setDeep( string $deep_name = ''): void;
deep_name

El valor que será agregado al final del nombre del elemento.

 

FormElementsInterface::load

Carga un elemento de formulario personalizado.

public FormElementsInterface::load( string $plugin, array $args = [] ): FormElementInterface;
plugin

La clave del plugin a cargar.

args

Un array con los argumentos. El formato de cada argumento debe ser name => value.

 

FormInterface::element

Crea un elemento personalizado.

element ( string $content, string $name = ''): FormElementInterface
content

El html correspondiente al elemento.

name

Si bien el elemento está personalizado, el nombre puede ser útil ser utilizado en la etiqueta o en el texto de ayuda. De no ser ingresado, se generará uno automáticamente.

 

FormElementsInterface::input

Crea un elemento input.

public FormElementsInterface::input( string $name, array $attr = [] ): FormElementInterface;
name

El nombre del elemento.

attr

Cualquier otro attributo del elemento.

Además de los atributos propios, se le puede pasar el atributo icon. Éste puede ser una cadena con el nombre del ícono, o un arreglo con varios valores, entre los que se destacan: 

 

FormElementsInterface::button

Crea un elemento botón. Dependiendo de los atributos, éste podrá ser un botón o un enlace o, simplemente, un elemento decorativo.

public FormElementsInterface::button( array $attr = [] ): FormElementInterface;
attr

Los attributos del elemento. Acepta el attributo icon.

 

FormElementsInterface::hidden

Crea un elemento oculto.

public FormElementsInterface::hidden( string $name, mixed $value = null ): HiddenInterface;
name

El nombre del elemento.

value

El valor del elemento. Si no se utiliza este parámetro, buscará el valor de la misma manerá que el resto de los elementos. De no encontrar un valor, el elemento no será creado.

 

FormElementsInterface::checkbox

Crea una o varias casillas de verificación.

public FormElementsInterface::checkbox( string $name, mixed $options = null, array $attr = [] ): FormElementInterface;
name

El nombre del elemento.

options

Si es un arreglo, se creará una casilla por cada elemento del arreglo. De lo contrario, si tiene un valor, será considerado su etiqueta.

attr

Cualquier otro attributo del elemento.

 

FormElementsInterface::toggle

Crea una casilla de verificación customizada, con una apariencia de botón.

public FormElementsInterface::toggle( string $name, array $attr = [] ): FormElementInterface;
name

El nombre del elemento.

attr

Cualquier otro attributo del elemento.

 

FormElementsInterface::file

Crea un input customizado para cargar archivos.

public FormElementsInterface::file( string  $name, array $options = [] ): FormElementInterface;
name

El nombre del elemento.

options

Las opciones para configurar el javascript.

 

FormElementsInterface::enter

Crea un botón de envío del formulario.

public FormElementsInterface::enter( string $label = '', array $attr = [] ): FormElementInterface;
label

La etiqueta que mostrará el botón.

attr

Los attributos del elemento. Acepta el attributo icon.

 

FormElementsInterface::radio

public FormElementsInterface::radio ( string $name, array $options, array $attr = [] ): FormElementInterface;
name

El nombre del elemento.

options

Un arreglo con las opciones del elemento.

attr

Cualquier otro attributo del elemento.

 

FormElementsInterface::select

public FormElementsInterface::select ( string $name, array $options, array $attr = [] ): FormElementInterface;
name

El nombre del elemento.

options

Un arreglo con las opciones del elemento.

attr

Cualquier otro attributo del elemento.

 

FormElementsInterface::suite

Un selector múltiple customizado.

public FormElementsInterface::suite ( string $name, array $options, array $attr = [] ): FormElementInterface;
name

El nombre del elemento.

options

Un arreglo con las opciones del elemento.

attr

Cualquier otro attributo del elemento.

 

FormElementsInterface::textarea

public FormElementsInterface::textarea ( string $name, array $attr = [] ): FormElementInterface;
name

El nombre del elemento.

attr

Cualquier otro attributo del elemento.

 

FormElementsInterface::editor

public FormElementsInterface::editor ( string $name ): FormElementInterface;
name

El nombre del elemento.

 

FormElementsInterface::collection

public FormElementsInterface::collection ( string $control, string $name ): FormElementInterface;
control

La clave con la que el javascript reconocerá la colección.

name

El nombre del elemento.

 

FormElementsInterface::group

Agrupa varios elementos de formulario.

public FormElementsInterface::group ( FormElementInterface ... $elements ): FormElementInterface;
elements

Los elementos a agrupar.

 

Formulario

Crea un formulario. Implementa la interfaz FormInterface que a su vez extiende la interfaz FormElementsInterface. Es decir, la clase Form, además de sus métodos, tiene todos los métodos de la clase Formelements.

 

FormInterface::getActions

Retorna un fragmento para la construcción de los botones de acción.

public FormInterface::getActions ( string $snippet = '' ): FormActionsInterface;
snippet

La clave del fragmento.

 

FormInterface::header

Establece un encabezado a un bloque de elementos de formulario.

public FormInterface::header ( mixed $attr = null, ?bool $toggle = null ): void;
attr

Acepta los mismos atributos que una fila.

toggle

Si se establece un valor boleano, el bloque de elementos podrá ser colapsado.

 

FormInterface::separate

Envuelve en un fieldset todos los grupos que se tienen hasta el momento.

public FormInterface::separate ( ?string $legend = null ): void;
legend

La leyenda que contendrá el fieldset.

 

FormInterface::columns

Coloca varios elementos en columnas si el ancho de pantalla lo permite.

public FormInterface::columns ( FormElementInterface ...$elements ): void
...elements

Los elementos a colocar en columnas.

 

FormInterface::addBlock

public FormInterface::addBlock ( string $html ): void;
html

Agrega un bloque al formulario. Un bloque consta de una o varias filas.

 

FormInterface::getLastElement

Retorna el último elemento anexado a la pila de elementos de formulario.

public FormInterface::getLastElement ( ): FormElementInterface;

 

FormInterface::renderForm

Envuelve con una etiqueta de formulario la cadena html pasada como parámetro. Además, agrega el token csrf.

public FormInterface::renderForm ( string $html, string|int $form_id = '' ): string;
html

El html a envolver con la etiqueta de formulario.

form_id

La id del formulario.

 

FormInterface::render

Devuelve el html.

public FormInterface::render ( ): string;