Como manejar fechas en Zend Framework con Zend Form y Zend Validate

Validar una fecha en un formulario usando los módulos Zend Form y Zend Validate no tiene ningún misterio tan solo deberemos agregar la clase Zend_Validate_Date a la opción valdators de nuestro elemento tipo text del fomulario, algo así:


$form->addElement('text', 'date', array(
	'label'      => 'date',
	'validators' => array('date')

));

El problema lo encontramos cuando queremos usar un determinado formato de fecha y lo queremos almacenar en la base de datos. Este tipo de tareas son las que un programador siempre recopila en una función y se las guarda en su librería para facilitarse la tareas repetitivas en sus proyectos. En cierto modo estas tareas ya las hacen o deberían hacer los frameworks (pues los frameworks son al final una recopliación de funciones y clases para facilitarnos el trabajo).


Como dar formato a la fecha del datepicker de jquery

Esta noche estaba probando el datepicker, el calendario de jQuery, que se incluye en su UI. Como suele suceder la documentación, esta aveces es un poco pobre y los ejemplos que se muestran no siempre funciona bien, ya sea porque están mal o no están actualizados y si ha eso le sumamos el cansancio y las horas frente al ordenador es probable que no nos enteremos de como funciona.

Según la documentación que encontramos en la web de jQuery UI para establecer el formato de fecha en el datepicker usaríamos el siguiente código:

$(function() {
	$("#datepicker").datepicker();
	$("#format").change(function() { $('#datepicker').datepicker('option', {dateFormat: $(this).val()}); });
});

Ok, el formato de la fecha se establece mediante un combo, por lo que tan solo deberíamos usar la parte del option y remplazar $(this).val() por el valor que nos interesa, por lo que nuestro código quedaría algo así:

$(function() {
	$("#datepicker").datepicker();
	$('#datepicker').datepicker('option', {dateFormat: 'dd/mm/yy'});
});

La cosa es que no funciona si no usamos un combo. Has de recordar que en los parámetros los has de cargar al llamar el datepicker así:

$("#startDate").datepicker({dateFormat: 'dd/mm/yy'});

De esta forma no tendrás problema en formatear el código, así que si esto te resulta útil ya sabes, descansa un poco, porque si no lo has visto antes y te has lanzado a google a buscar la solución es que llevas demasiadas horas frente a la máquina.

Buenas noches... oh.. ¿buenos días ya?


Como activar los helpers con Zend_Application

Últimamente le encuentro más pegas que ventajas al modulo Zend_Application que incorpora la versión 1.9 del Zend Framework. Esta vez se trata de los helpers.

El primer problema lo encontramos a la hora de construir la aplicación con Zend_Tool, pues este no crear la carpeta pertinente. Y esto nos lleva al segundo problema y es que Zend_Tool no registra el lugar donde serán llamados los helpers.


Twitter is over capacity

Twitter is over capacityHoy al intentar conectarme a Twitter me he encontrado con esta simpática imagen que nos dice Twitter is over capacity, os dejo una captura para los que no la hubierais visto nunca. Aprovecho esto para recoradaros que podéis encontrar mi Twitter en http://twitter.com/backtheweb.


Zend framework, como hacer un layout para cada modulo

Si estas usando la última versión de Zend Framework, la 1.9.0, y usas Zend_Application para crear aplicaciones modulares habrás notado que no puedes asignar un layout diferente para cada modulo. Después de buscar y probar diferentes métodos algunos muy complejos y que no se muy bien porque no me funcionaban encontré la solución mezclando todo lo que había visto.

Vamos a suponer que queremos crear un modulo Admin para nuestra aplicación y que usamos la jerarquía de ficheros establecida con Zend Tool. Seguramente nuestro fichero application.ini empezará algo similar a esto: