La clase ComponentFactory ofrece un mecanismo sintético simple para obtener cualquier elemento
Html5 debidamente (renderizado) o en la forma de clase BsElm, en caso de que todavía sea
necesario hacerle ajustes antes de enviarlo a las plantillas de salida.
Es la forma conveniente de uso porque resuelve adecuadamente todas las dependencias internas.
Salvo casos especiales (como el dialogo modal) que se indican el la documentación
particular de los mismos.
Cualquier nombre de etiqueta HTML válido, escrito en minúsculas. (ej: div, a, table, etc.) Su default es div
$elmDefEs un array de pares opcionales clave => valor, en el que las claves deben ser escritas con la ortografía que se muestra a continuación:
$elmDef = [
'tagName' => 'etiqueta'
// el nombre del elemento html
'id' => 'id_del_elemento' | '' | no asignar
// identificador único para manejo explícito (puede ir dentro de attributes, pero
// puede ser conveniente para casos en que se quiere hacer manejo explícito)
'context' => 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | ''
// Descriptor de contexto.
tipoDeElemento => 'cadena_indicadora_de_tipo' // ej: dropdown-menu, menu, etc
// Tipo BootStrap, o tipo HTML para generar y asignar clases en sus elementos anidados.
// Es particularmente importante en los procedimientos de construcción recursiva de
// los items integrantes del parámetro 'innerHtm': orienta la
// identificación del ComponentFactory requerido para cada tipo.
clases => [] // (default [] array vacío)
// Array de clases a asignar
'attributes' => [] // (default [] array vacío)
// Array de atributos html válidos como pares de cadenas nombre_atributo => valor
'unKeyedAttributes' => [] // (default [] array vacío)
// Array de atributos autovalor (que se presentan sólos en la etiqueta html)
'autoClose' => TRUE | FALSE // default FALSE
// Si no necesita etiqueta de cierre Booleano pasar TRUE cuando no se requiera
'innerHtm' => 'texto' | [$elmDef1, $elmDef2, ... ] | [$elm1, $elm2, ...]
// Contenido anidado en la etiqueta HTML
// corresponde al atributo innerHtml de los elementos HTMl que es ubicado entre
// las etiquetas así: <tagName ...>innerHtml</tagName>
// Puede ser un texto, un array de textos, un array de definiciones de elementos
// como esta, un array de instancias de elementos o un array que combina
// textos, definiciones e instancias como elementos.
'buildVars' => [] // (default [] array vacío)
// todos los parámetros especiales, específicos del elemento pasados como
// pares clave valor. En muchos casos no se usa
];
Nota importante:
Siempre que en la documentación de este módulo se haga referencia a una definición de elemento
html de algún tipo (p.ej lista ul) se estará aludiendo al uso de esta estructura para definirlo.
Cuando se anide un componente TwBs dentro de otro es importante que su propiedad tipoDeElemento sea asignada correctamente. Si se ignora o se asigna mal, es posible que no se resuelvan correctamente sus atributos por defecto en caso de no estar presentes.
En algunos casos, los componentes admiten claves adicionales explícitas. Algunos, como el componente Object's Embeder soportan claves extra ('ratio') y otros las usan en el array 'buildVars'. El componente DropDown, por ejemplo, soporta las claves 'btn' => btn_def_array, y 'lst' => list_items_array, para asegurar que sean adecuadamente interpretados al construirlo en iteraciones desde ComponentFactory.