Twitter-Bootstrap Tools

Components Factory

  \TwBs2l\Factory\TwBsFactory

Esta clase es un abstractor del conjunto completo de componentes Twitter-Bootstrap Tools. Su propósito es facilitar instanciación y uso de los mismos empleando los arrays de definición de elementos en procesos recursivos para garantizar que haya una correcta identificación de aquellos al construir estructuras complejas, con múltiples niveles de anidación.

Ofrece un único método público estático de caracter global, que puede ser invocado desde cualquier parte de la aplicación.

    \TwBs2l\Factory\TwBsFactory::getBsElement(array $elmDef, boolean [$parsed])
    dónde:
    $elmDef  // es un array de definición en el que es fundamental que el valor
             // bajo la clave tipoDeElemento haya sido correctamente establecido.
             // En caso de que el tipo indicado no esté soportado construye una 
             // instancia de la clase TwBs2l/Html/BsElm y procesa la definición
             // dentro de la etiqueta indicada en tagName, o en una etiqueta div
             // en caso de que tagName sea nulo o vacío.
  
    $parsed  // Su default es TRUE
             // Establece si el objeto debe ser "renderizado" y devuelto como 
             // cadena HTML lista para ser servida; o, en caso contrario como 
             // instancia de la clase de componente requerida para ejecutar sobre 
             // ella operaciones adicionales antes de servirla.

Valores admitidos para la clave tipoDeElemento

    Valor bajo la clave            Componente devuelto (clase)
    'btn'                          Button component (BsButton)
    'btn-group'                    Buttons Group component (Group)
    'btn-toolbar'                  ToolBar Group Component (ToolBarGroup)
  

Ejemplos de uso

  • ver ejemplo 4 en Groups Component
  • Se sugiere revisar el código de la clase TwBs2l/Html/BsElm. En el método (protegido) BsElm::parseNestedElementToHtml($elmDef) se hace uso intensivo del mismo al iterar para construir los elementos anidados y renderizarlos.
    class BsElm extends TwBs implements ElmInterface
    {
        // ... líneas de código no pertinentes
        protected function parseNestedElements(){
            // Cadena de salida para recoger los elementos anidados
            $innrHtmStr = '';
            if( count($this->innerHtm) > 0 ){
                foreach($this->innerHtm as $elmDef){
                    $innrHtmStr .= $this->parseNestedElementToHtml($elmDef);
                }
            }
            return $innrHtmStr;
        }
        protected function parseNestedElementToHtml($Elm){
            $outStr = '';
            if(is_object($Elm)){
                $outStr .= (method_exists($Elm, 'toString')) ? $Elm->toString() : '';
            }elseif(is_array($Elm)){
                // ejemplo de uso
                $outStr .= \TwBs2l\Factory\TwBsFactory::getBsElement($Elm);
            }elseif(is_scalar($Elm)){
                $outStr .= $Elm;
            }
            return $outStr;
        }
        // ... líneas de código no pertinentes
    }

Twitter-Bootstrap Tools