Helper UI.
Funciones para manipular inputs de formularios

Code Helper

Helpers – UI – Inputs en formularios

Funciones para representar inputs en formularios. Generar campos donde insertar datos.

Generamos inputtext de texto, para fechas, para números, comboBox, radioButtons, checkBox, labels, textareas y otros controles.

Utiliza los estilos de Bootstrap y las validaciones de jQuery

/**
 * HelperUI.php
 * @author      Code Develium
 */

namespace Helpers;

/**
 * Class HelperUI
 */
abstract class HelpUI
{
    /**
     * Devuelve un input text en HTML.
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio ya realiza la validación.
     * Incorpora la clase form-control de Bootstrap.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param mixed  $valor
     * @param bool   $obligatorio
     * @param int    $tabIndex
     * @param int    $maxLength
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function inputText( $idName, 
                                      $valor, 
                                      $obligatorio = false, 
                                      $tabIndex = null, 
                                      $maxLength = null, 
                                      $titulo = null, 
                                      $arrayExtra = [])
    {
        $ui = "<input type=\"text\" id=\"{$idName}\" 
                name=\"{$idName}\"";

        if ($obligatorio) {
            // required => Validar antes del jquery-validation
            $ui .= " data-rule-required=\"true\" 
                     data-msg-required=\"Valor obligatorio\"";
        }

        if (!HelpValidate::isEmpty($valor)) {
            $valor = htmlspecialchars($valor);
            $ui    .= " value=\"{$valor}\"";
        }

        if (!empty($tabIndex)) {
            $ui .= " tabindex=\"{$tabIndex}\"";
        }

        if (!empty($maxLength)) {
            $ui .= " maxlength=\"{$maxLength}\"";
            $ui .= " data-rule-maxlength=\"{$maxLength}\"
                     data-msg-maxlength=\"Máximo {$maxLength} 
                     caracteres\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "form-control";

        foreach(HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        return $ui;
    }

    /**
     * Devuelve un input password en HTML.
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio ya realiza la validación.
     * Incorpora la clase form-control de Bootstrap.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param mixed  $valor
     * @param bool   $obligatorio
     * @param int    $tabIndex
     * @param int    $maxLength
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function inputPassword( $idName, 
                                          $valor, 
                                          $obligatorio = false,
                                          $tabIndex = null, 
                                          $maxLength = null, 
                                          $titulo = null, 
                                          $arrayExtra = [])
    {
        $ui = "<input type=\"password\" id=\"{$idName}\" 
               name=\"{$idName}\"";

        if ($obligatorio) {
            // required => Validar antes del jquery-validation
            $ui .= " data-rule-required=\"true\" 
                     data-msg-required=\"Valor obligatorio\"";
        }

        if (!HelpValidate::isEmpty($valor)) {
            $valor = htmlspecialchars($valor);
            $ui    .= " value=\"{$valor}\"";
        }

        if (!empty($tabIndex)) {
            $ui .= " tabindex=\"{$tabIndex}\"";
        }

        if (!empty($maxLength)) {
            $ui .= " maxlength=\"{$maxLength}\"";
            $ui .= " data-rule-maxlength=\"{$maxLength}\" 
                     data-msg-maxlength=\"Máximo {$maxLength} 
                     caracteres\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "form-control";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        return $ui;
    }

    /**
     * Devuelve un input numérico en HTML.
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio ya realiza la validacion.
     * Incorpora la clase form-control de Bootstrap.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param mixed  $valor
     * @param bool   $obligatorio
     * @param int    $tabIndex
     * @param int    $maxLength
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function inputNumber( $idName, 
                                        $valor, 
                                        $obligatorio = false,
                                        $tabIndex = null, 
                                        $maxLength = null, 
                                        $titulo = null, 
                                        $arrayExtra = [])
    {

        $ui = "<input type=\"number\" id=\"{$idName}\" 
               name=\"{$idName}\"";

        if ($obligatorio) {
            $ui .= " required data-rule-required=\"true\" 
                     data-msg-required=\"Valor obligatorio\"";
        }

        $valor = htmlspecialchars($valor);
        $ui    .= " value=\"{$valor}\"";

        if (!empty($tabIndex)) {
            $ui .= " tabindex=\"{$tabIndex}\"";
        }

        if (!empty($maxLength)) {
            $ui .= " maxlength=\"{$maxLength}\"";
            $ui .= " data-rule-maxlength=\"{$maxLength}\" 
                     data-msg-maxlength=\"Máximo {$maxLength} 
                     caracteres\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "form-control";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        return $ui;
    }

    /**
     * Devuelve un input hidden en HTML.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param mixed  $valor
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function inputHidden( $idName, 
                                        $valor, 
                                        $arrayExtra = [])
    {

        $ui = "<input type=\"hidden\" id=\"{$idName}\" 
               name=\"{$idName}\"";

        $valor = htmlspecialchars($valor);
        $ui    .= " value=\"{$valor}\"";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= ">";

        return $ui;
    }

    /**
     * Devuelve un input text para mostrar una fecha y hora en HTML.
     * Es independiente a comillas simples o dobles.
     * Si el obligatrorio ya realiza la validacion.
     * Incorpora la clase form-control de Bootstrap.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param mixed  $valor
     * @param bool   $obligatorio
     * @param int    $tab_index
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function inputDateTime( $idName, 
                                          $valor, 
                                          $obligatorio = false,
                                          $tab_index = null, 
                                          $titulo = null, 
                                          $arrayExtra = [])
    {
        $arrayExtra[ 'placeholder' ]         = 'dd/mm/yyyy hh:mm:ss';
        $arrayExtra[ 'data-rule-minlength' ] = 19;
        $arrayExtra[ 'data-msg-minlength' ]  = "Formato de fecha y 
                                                hora incorrecto";
        $arrayExtra[ 'data-rule-maxlength' ] = 19;
        $arrayExtra[ 'data-msg-maxlength' ]  = "Formato de fecha y 
                                                hora  incorrecto";
        $arrayExtra[ 'data-rule-pattern' ]   = "\\d{2}/\\d{2}/\\d{4}
                                                \d{2}:\d{2}:\d{2}";
        $arrayExtra[ 'data-msg-pattern=' ]   = "Formato de fecha y 
                                                hora incorrecto";

        return HelpUI::inputText( $idName, 
                                  $valor, 
                                  $obligatorio, 
                                  $tab_index, 
                                  19, 
                                  $titulo, 
                                  $arrayExtra);

    }

    /**
     * Devuelve un input text para mostrar una fecha en HTML.
     * Es independiente a comillas simples o dobles.
     * Si ee obligatrorio ya realiza la validacion.
     * Incorpora la clase form-control de Bootstrap.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param mixed  $valor
     * @param bool   $obligatorio
     * @param int    $tab_index
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function inputDate( $idName, 
                                      $valor, 
                                      $obligatorio = false, 
                                      $tab_index = null, 
                                      $titulo = null, 
                                      $arrayExtra = [])
    {
        $arrayExtra[ 'placeholder' ]         = 'dd/mm/yyyy';
        $arrayExtra[ 'data-rule-minlength' ] = 10;
        $arrayExtra[ 'data-msg-minlength' ]  = "Formato de fecha 
                                                incorrecto";
        $arrayExtra[ 'data-rule-maxlength' ] = 10;
        $arrayExtra[ 'data-msg-maxlength' ]  = "Formato de fecha 
                                                incorrecto";
        $arrayExtra[ 'data-rule-pattern' ]   = "\\d{2}/\\d{2}/\\d{4}";
        $arrayExtra[ 'data-msg-pattern=' ]   = "Formato de fecha 
                                                incorrecto";

        return HelpUI::inputText( $idName, 
                                  $valor, 
                                  $obligatorio, 
                                  $tab_index, 
                                  10, 
                                  $titulo, 
                                  $arrayExtra);
    }

    /**
     * Devuelve una imagen en HTML
     * Es independiente a comillas simples o dobles.
     * El id y el name es el mismo valor.
     *
     * @param string $id_name
     * @param string $src
     * @param int    $width
     * @param int    $height
     * @param string $titulo
     * @param string $alt
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function image( $id_name, 
                                  $src, 
                                  $width = null, 
                                  $height = null, 
                                  $titulo = null, 
                                  $alt = null, 
                                  $arrayExtra = [])
    {
        $ui = "<img id=\"{$id_name}\" name=\"{$id_name}\" 
               src=\"{$src}\"";

        if (!empty($width)) {
            $ui .= " width=\"{$width}\"";
        }

        if (!empty($height)) {
            $ui .= " height=\"{$height}\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        if (!HelpValidate::isEmpty($alt)) {
            $alt = htmlspecialchars($alt);
            $ui  .= " alt=\"{$alt}\"";
        }

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= '>';

        return $ui;
    }

    /**
     * Devuelve un Select en HTML
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio ya realiza la validacion.
     * Incorpora la clase form-control de Bootstrap.
     * El id y el name es elmismo valor.
     * El array ha de ser clave => valor.
     *
     * @param string $idName
     * @param string $claveSeleccionada
     * @param array  $arrOpciones
     * @param bool   $incluirVacio
     * @param bool   $obligatorio
     * @param int    $tabIndex
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function comboBox( $idName, 
                                     $claveSeleccionada = '', 
                                     $arrOpciones = [], 
                                     $incluirVacio = false,
                                     $obligatorio = false, 
                                     $tabIndex = null, 
                                     $titulo = null, 
                                     $arrayExtra = [])
    {
        $ui = "<select id=\"{$idName}\" name=\"{$idName}\"";

        if ($obligatorio) {
            $ui .= " required data-rule-required=\"true\" 
                     data-msg-required=\"Valor obligatorio\"";
        }

        if (!empty($tabIndex)) {
            $ui .= " tabindex=\"{$tabIndex}\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "form-control";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        $opciones = '';
        if ($incluirVacio) {
            $sel = '';
            if ((''.$claveSeleccionada) === ('')) {
                $sel = 'selected';
            }
            $opciones .= '<option '.$sel.' value=""></option>'."\n";
        }
        foreach ($arrOpciones as $key => $value) {
            $sel = '';
            if ((''.$claveSeleccionada) === (''.$key)) {
                $sel = 'selected';
            }
            $value    = htmlspecialchars($value);
            $opciones .= '<option '.$sel.' value="'. $key .'">' .
                             $value . 
                         '</option>'."\n";
        }
        $ui .= $opciones.'</select>';

        return $ui;
    }

    /**
     * Devuelve un input CheckBox en HTML.
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio ya realiza la validacion.
     *
     * @param string $id
     * @param string $name
     * @param mixed  $valor
     * @param bool   $checked
     * @param string $text
     * @param bool   $obligatorio
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function checkbox( $id, 
                                     $name, 
                                     $valor, 
                                     $checked = false, 
                                     $text = '', 
                                     $obligatorio = false, 
                                     $titulo = null, 
                                     $arrayExtra = [])
    {
        $ui = "<input type=\"checkbox\" id=\"{$id}\" 
               name=\"{$name}\"";

        if ($obligatorio) {
            $ui .= " required data-rule-required=\"true\" 
                     data-msg-required=\"Valor obligatorio\"";
        }

        if ($checked) {
            $ui .= " checked";
        }

        $valor = htmlspecialchars($valor);
        $ui    .= " value=\"{$valor}\"";

        if (!empty($tabIndex)) {
            $ui .= " tabindex=\"{$tabIndex}\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "form-control";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        $ui .= '&nbsp;'.htmlspecialchars($text);

        return $ui;
    }

    /**
     * Devuelve un Button Submit  en HTML
     * Es independiente a comillas simples o dobles.
     * El id y el name es elmismo valor.
     *
     * @param string $id_name
     * @param string $text
     * @param string $nivel primary, secundary...
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function buttonSubmit( $id_name, 
                                         $text, 
                                         $nivel = 'default', 
                                         $titulo = null, 
                                         $arrayExtra = [])
    {
        $ui = "<button type=\"submit\" id=\"{$id_name}\" 
               name=\"{$id_name}\"";

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "btn";
        if (!empty($nivel)) {
            $classNameList .= " btn-{$nivel}";
        }

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        $ui .= htmlspecialchars($text).'</button>&nbsp;';

        return $ui;
    }

    /**
     * Devuelve un Button con un link en HTML
     * Es independiente a comillas simples o dobles.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param string $text
     * @param string $href
     * @param string $target
     * @param string $nivel primary, secundary...
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function buttonLink( $idName, 
                                       $text, 
                                       $href, 
                                       $target = '_blank', 
                                       $nivel = 'default', 
                                       $titulo = null, 
                                       $arrayExtra = [])
    {
        $ui = "<a id=\"{$idName}\" name=\"{$idName}\" 
               href=\"{$href}\"";

        if (!empty($target)) {
            $ui .= " target=\"{$target}\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {

            $titulo = htmlspecialchars($titulo);

            $ui .= " title=\"{$titulo}\"";
        }

        $classNameList = "btn";

        if (!empty($nivel)) {
            $classNameList .= " btn-{$nivel}";
        }

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        $ui .= htmlspecialchars($text).'</a>&nbsp;';

        return $ui;
    }


    /**
     * Devuelve un textarea en HTML.
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio ya realiza la validación.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param mixed  $valor
     * @param bool   $obligatorio
     * @param int    $rows
     * @param int    $tabIndex
     * @param int    $maxLength
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function textArea( $idName, 
                                     $valor, 
                                     $obligatorio = false, 
                                     $rows = 4, 
                                     $tabIndex = null, 
                                     $maxLength = null, 
                                     $titulo = null, 
                                     $arrayExtra = [])
    {

        $ui = "<textarea id=\"{$idName}\" name=\"{$idName}\"";

        if (!empty($rows)) {
            $ui .= " rows=\"{$rows}\"";
        }

        if ($obligatorio) {
            $ui .= " required data-rule-required=\"true\" 
                     data-msg-required=\"Valor obligatorio\"";
        }

        if (!empty($tabIndex)) {
            $ui .= " tabindex=\"{$tabIndex}\"";
        }

        if (!empty($maxLength)) {
            $ui .= " maxlength=\"{$maxLength}\"";
            $ui .= " data-rule-maxlength=\"{$maxLength}\" 
                     data-msg-maxlength=\"Máximo {$maxLength}
                     caracteres\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "form-control";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        $ui .= htmlspecialchars($valor).'</textarea>';

        return $ui;
    }

    /**
     * Devuelve un input RadioButton en HTML.
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio ya realiza la validacion.
     *
     * @param string $id
     * @param string $name
     * @param mixed  $valor
     * @param bool   $checked
     * @param string $text
     * @param bool   $obligatorio
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function radioButton( $id, 
                                        $name, 
                                        $valor, 
                                        $checked = false, 
                                        $text = '', 
                                        $obligatorio = false, 
                                        $titulo = null, 
                                        $arrayExtra = [])
    {
        $ui = "<input type=\"radio\" id=\"{$id}\" name=\"{$name}\"";

        if ($obligatorio) {
            $ui .= " required data-rule-required=\"true\" 
                     data-msg-required=\"Valor obligatorio\"";
        }

        if ($checked) {
            $ui .= " checked";
        }

        $valor = htmlspecialchars($valor);
        $ui    .= " value=\"{$valor}\"";

        if (!empty($tabIndex)) {
            $ui .= " tabindex=\"{$tabIndex}\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }

        $classNameList = "form-control";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'class') {
                $classNameList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " class=\"{$classNameList}\">";

        $ui .= '&nbsp;'.htmlspecialchars($text);

        return $ui;
    }

    /**
     * Devuelve un link en HTML
     * Es independiente a comillas simples o dobles.
     * El id y el name es el mismo valor.
     *
     * @param string $idName
     * @param string $text
     * @param string $href
     * @param string $target
     * @param string $titulo
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function link( $idName, 
                                 $text, 
                                 $href, 
                                 $titulo = null, 
                                 $target = '_blank', 
                                 $arrayExtra = [])
    {
        $ui = "<a id=\"{$idName}\" name=\"{$idName}\" 
               href=\"{$href}\"";

        if (!empty($target)) {
            $ui .= " target=\"{$target}\"";
        }

        if (!HelpValidate::isEmpty($titulo)) {
            $titulo = htmlspecialchars($titulo);
            $ui     .= " title=\"{$titulo}\"";
        }


        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= '>';
        $ui .= htmlspecialchars($text).'</a>&nbsp;';

        return $ui;
    }


    /**
     * Muestra un label vacío para mostrar un error de un input
     *
     * @param string $input
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function labelError($input = '', $arrayExtra = [])
    {
        $ui = "<label id=\"{$input}-error\" class=\"error\"";

        if (!empty($input)) {
            $ui .= " for=\"{$input}\"";
        }

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= '></label>';

        return $ui;
    }

    /**
     * Muestra un label referente a un input
     * Es independiente a comillas simples o dobles.
     * Si es obligatrorio se muestra un asterisco en rojo.
     *
     * @param string $text
     * @param bool   $obligatorio
     * @param string $inputNameFor
     * @param array  $arrayExtra
     *
     * @return string
     */
    public static function label( $text, 
                                  $obligatorio = false, 
                                  $inputNameFor = '', 
                                  $arrayExtra = [])
    {
        $ui = "<label";

        if (!empty($inputNameFor)) {
            $ui .= " for=\"{$inputNameFor}\"";
        }

        $styleList = "word-wrap: break-word;";

        foreach (HelpConvert::toArray($arrayExtra) as $key => $value) {

            if (strtolower(trim($key)) == 'style') {
                $styleList .= ' '.$value;
                break;
            }

            $value = htmlspecialchars($value);

            $ui .= " $key=\"{$value}\"";
        }

        $ui .= " style=\"{$styleList}\">";

        $ui .= htmlspecialchars($text);

        if ($obligatorio) {
            $ui .= "&nbsp;
                    <span style=\"color:red;font-size: smaller\">
                    *
                    </span>";
        }

        $ui .= '</label>';

        return $ui;
    }

    /**
     * Añade los tags de validación de un campo obligatorio
     * @return array
     */
    public static function validarObligatorio()
    {
        return ['data-rule-required' => "true",
                'data-msg-required' => 'Valor obligatorio'];
    }

    /**
     * Añade los tags de validación de una mínima longitud en un campo
     *
     * @param int    $min
     * @param string $error
     *
     * @return array
     */
    public static function validarMinLength( $min, 
                                   $error = 'Mínimo %1 caracteres')
    {
        $error = str_replace('%1', $min, $error);
        return ['data-rule-minlength' => $min, 
                'data-msg-minlength' => $error];
    }

    /**
     * Añade los tags de validación de una máxima longitud en un campo
     *
     * @param int    $max
     * @param string $error
     *
     * @return array
     */
    public static function validarMaxLenght( $max, 
                                 $error = 'Máximo %1 caracteres')
    {
        $error = str_replace('%1', $max, $error);
        return ['data-rule-maxlength' => $max, 
                 'data-msg-maxlength' => $error];
    }

    /**
     * Añade los tags de validación de comparación igual entre dos 
     * campos
     *
     * @param $idIqgual
     * @param $error
     *
     * @return array
     */
    public static function valiadrIgualQue($idIqgual, $error)
    {
        return ['data-rule-equalto' => $idIqgual, 
                'data-msg-equalto' => $error];
    }

    /**
     * Añade los tags de validación de un campo en formato email
     *
     * @param string $error
     *
     * @return array
     */
    public static function validarEmail( $error = 'Formato de email 
                                                   incorrecto')
    {
        return ["data-rule-email" => "true", 
                "data-msg-email" => $error];
    }

}