Smarty: cambiar el idioma del "html_select_date"

El motor de templates Smarty dispone de muchos comandos que una vez invocados generan un componente (compuesto por código html) para nuestra interfaz web.

En este caso concreto conoceremos a html_select_date, que con solo invocarlo dentro del código de un formulario (encerrado entre los tags <form> y </form>) generará 3 combos con el día, mes y año. Esto es útil para cuando queremos hacer un formulario que consulte a partir de una fecha, o entre un rango de fechas. Smarty nos da las herramientas para no tener que lidiar con el código html y poder rápidamente disponer de estos componentes.

Nota: deberemos contar con una estructura base para poder poner esto en funcionamiento.

En nuestro archivo de template deberemos tener el código estándar html para el formulario, más el tag correspondiente para el componente generado por Smarty:


<form NAME="form1" ACTION="generarConsulta.php">

<!--{html_select_date}-->

<button name="Aceptar">Aceptar</button>

</form>


Y esto generará el siguiente resultado:


También podríamos hacer un formulario que tuviera un rango de dos fechas para filtrar los datos de nuestra consulta, por que lo que podríamos hacer el siguiente código, ajustando algunos parámetros:


Que dará por resultado la siguiente interfaz:

La documentación sobre este componente es muy clara, ofreciéndonos varios parámetros para adecuar el mismo a nuestras necesidades.

Pero el primer problema que nos encontramos, y que no aparece claramente en la documentación, es como cambiar el idioma del contenido del mismo (como se ve en ambas capturas de pantalla, los meses se encuentran en inglés).

Aprender a pescar, no a comer de la mano

Consejo: cuando no encuentres algo en la documentación de Smarty, ve al foro del sitio oficial (enlace arriba a la derecha) y busca dentro de las consultas de los usuarios... y generalmente encontrarás lo que buscas.

Smarty usará la configuración del idioma, fechas, etc, que venga definido desde el entorno de PHP, por lo que deberemos para este caso tener correctamente la fecha configurada con setlocale:


setlocale (LC_TIME,"spanish");

Y obtendremos el resultado esperado:


Si no sabes como empezar a trabajar con Smarty, además de sugerirte que recorras el manual (que tiene una versión en castellano), puedes ver otros artículos que he escrito al respecto.

Espero que te sea útil este "detalle" del idioma ;-)

5 comentarios:

fernandezuy dijo...

Muy bueno...

enrique_place dijo...

De nada, señor ;-)

Espero que los demás artículos introductorios te permitan hacer las primeras pruebas con Smarty de forma fácil.

Rodrigo dijo...

Enrique, tenés idea si se puede pre-seleccionar la fecha a mostrar ?
Quiero que cargue con una fecha "xx-xx-xxxx" seteada previamente.
Muchas gracias :)

Rodrigo dijo...

Bueno, respondo mi propia duda.
Googleando encontré:

time="DD-MM-YYYY"

Saludos ;)

enrique_place dijo...

Si, ese tipo de configuraciones son indispensables. Es el "time" que aparece en el ejemplo, donde le cargo una variable que se llama $fechaDesde ;-)

Lee la documentación al respecto, puedes manejar una fecha del tipo "YYYY-MM-DD" o lo aconsejable, un timestamp.

Entradas populares