Muchas veces me han preguntado como resolver ó facilitar el uso de estos campos (date y datetime) en symfonyX.X, algunos tratan de modificar el core (la parte de doctrine) que se encarga del casting (o recularmente llamado parseo), personalmente considero que la ultima opcion seria modificar el core.

El resultado sera algo parecido a esto.

Date Time Picker
Date Time Picker

Este esjemplo esta implementado en symfony 2, ya que en la 1 es más sencillo hacerlo.

Despues de este cuento les explico:

Necesitamos 3 librerias de javascript

  1. jquery-1.5.2.min.js
  2. jquery-ui.min.js
  3. jquery-ui-timepicker-addon.js /*Esta solo es necesaria para los campos datetime*/

Y una hoja de estilo

  1. jquery-ui-1.8.20.custom.css

Ahora que tenemos los archivos, los agregamos en el head de nuestro template (quedara algo asi):

 
 
 {% block title %}Administración :: {% endblock %}
  
  {% block css %}{% endblock %}
  
  
  
  {% block js %}{% endblock %}

En nuestro archivo de definición de formulario, por ejemplo en

namespace paquete\modeloBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class TestType extends AbstractType{
public function buildForm(FormBuilder $builder, array $options){
$builder->add(‘fecha’, ‘date’, array(‘label’  => ‘Inicio :’, ‘widget’ => ‘single_text’, ‘format’ => ‘yyyy-MM-dd’,));
}

public function getName(){
return ‘paquete_modelobundle_testtype’;
}
}

Luego agergamos la funcion que nos mostrata el dato (esta debe de ir entre las viñetas HEAD):


Espero les sea de utilidad y que modificar el core no sea la primera de sus alternativas, no creo que el framework sea perfecto pero siempre hay alternativas.

Saludos.

Anuncios