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 .= ' '.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> '; 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> '; 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 .= ' '.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> '; 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 .= " <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]; } }