Casi todas las clases que ofrecen grupos, ToolBar Component, NavBar Component, Carrousel, Album Component, ... extienden esta clase, sobreescribiendo algunos de sus métodos para establecer los atributos por defecto que las caracterizan.
Puede ser usada de dos maneras:
$grupo = new \TwBs2l\Component\Group($typeName, $groupElements, $groupOptions)
donde:
// especificación del tipo de componente
$typeName = '' | 'btn-group'
// Array opcional de definiciones de los componentes contenidos
$groupElements = [],
// Definición sintética del grupo usando un array de definición de componente
$groupOptions = [],
En caso de ser nulo el array de componentes anidadas debe pasarse en la clave 'innerHtm' de la definición.
Recíprocamente, si se pasa el array de componentes, tal clave es ignorada.
$btn1 = [ 'tagName' => 'button', 'tipoDeElemento' => 'btn', 'clases' => ['btn', 'btn-default'], 'attributes' => [], 'unKeyedAttributes' => [], 'innerHtm' => 'Botón uno' ], |
$btn2 = $btn1; $btn2['innerHtm'] = 'Botón dos'; $btn3 = $btn1; $btn3['innerHtm'] = 'Botón tres'; $btn3['clases'] = ['btn', 'btn-primary'] // Nótese que bastan ligeros cambios // a la definición del primer botón. |
$btns = [ $btn1, $btn2, $btn3 ]; $grupo = new Group('btn-group', $btns) $salida = $grupo->toString(); //Ahora pasar la salida a su destino echo $salida; |
Si ahora fuese necesario asociar comportamientos o acciones a los botones
para convertirlos en verdaderos controles de comando basta con asignarles
algunos atributos antes de instanciar el grupo. ej:
$btn1['attributes']['onclick'] = "llamadojavascript(params ...)", ]; // observar el uso de comilla doble por si params incluye constantes que deban pasar // usando comillas simples. $btn2['attributes'] = [ 'form' => 'form_id', 'formaction' => 'url_a_invocar', 'type' => 'submit', ]; $btn3['clases'][] = 'disabled'; // Nótese que la clase es agregada al array. |
emplea $gbdef=[ 'clases' => ['btn-group-sm'], ]; $gb2 =new Group( 'btn-group', $gbitems, $gbdef); echo $gb2->toString();
emplea $gbdef=[ 'clases' => ['btn-group-lg'], ]; $gb3 =new Group('btn-group', $gbitems, $gbdef); echo $gb3->toString();
$objpad = [ 'tagName' => 'button', 'tipoDeElemento'=> 'btn', 'clases' => ['btn', 'btn-default'], 'attributes' => [], 'unKeyedAttributes' => [], 'context' => 'primary', 'innerHtm' => '' ];
$azinnr = []; for($i = 65; $i<79; $i++){ $objpad['innerHtm'] = ''.$i.';'; $azinnr[] = $objpad; } $objpad['innerHtm'] = 'Ñ'; $azinnr[] = $objpad; for($i = 79; $i<91; $i++){ $objpad['innerHtm'] = ''.$i.';'; $azinnr[] = $objpad; }
$azgroup = [ 'tagName' => 'div', 'tipoDeElemento'=> 'btn-group', 'clases' => [], 'attributes' => [], 'unKeyedAttributes' => [], 'innerHtm' => $azinnr, ];
echo \TwBs2l\Factory\TwBsFactory::getBsElement($azgroup)
Se preparan las listas a mostrar en los dropdowns. Para este ejemplo se usa la misma en los tres. $lista = [ 'item1' => [ 'text' => 'primer item', 'link' => '#', 'disabled' => 1, // mostrar deshabilitado 'badge' => 1, ], '%sep%', // para mostrar un separador 'item2' => [ 'id' => 'itm-243', 'text' => 'Item 243, tiene id', 'badge' => 243, 'link' => '/243', ], [ 'text'=> 'encabezado de sección', 'isheader' => 1, // para insertar un encabezado ], [ 'text'=> 'textoa a mostrar 3', 'link'=> 'uri_a_enlazar1', 'badge' => 64, 'context' => '', 'clase' => ['active'] ], ]; |
// Se preparan los atributos comunes a // los dropdowns: $dddef = [ 'clases' => ['btn-group', 'btn-group-sm'], 'attributes' => ['role'=> 'group'] ]; // Se instancian asignando context para tener // efecto gráfico $dropdown = new \TwBs2l\Component\DropDown( 'Botón normal', 0, $lista, 'default', $dddef); $success = new \TwBs2l\Component\DropDown( 'Success', 0, $lista, 'success', $dddef); $dngerup = new \TwBs2l\Component\DropDown( 'Danger alineado derecha', 3, $lista, 'danger', $dddef); // Se anexan las instancias al atributo innerHtm del // grupo usado en el ejemplo 2. $gbitems[] = $dropdown; $gbitems[] = $success; $gbitems[] = $dngerup; // Se emplea la plantilla común a los grupos para // crear una definición nueva. Y se establece su // clave innerHtm $grupo5 = $objpad; $grupo5['innerHtm'] = $gbitems; $grupo5['clases'][] = 'btn-group-sm'; // Se muestra usando un llamado sintético a // Component factory echo \TwBs2l\Factory\TwBsFactory::getBsElement($grupo5); |