Error Call to a member function format() on string , En formulario Symfony

publicado por: Anonymous

Tengo el siguiente formulario en symfony:

->add('horaI', ChoiceType::class, array(
      'label' => 'Hora Inicio',
      'placeholder' => 'Seleccione una hora',
      'attr' => array(
                 'class' => 'form-name form-control'
                ),
      'choices'  => array(
                '08:00' => '8:00',
                '09:00' => '9:00',
                '10:00' => '10:00',
                '11:00' => '11:00',
                '12:00' => '12:00',
                '13:00' => '13:00',
                '14:00' => '14:00',
                '15:00' => '15:00',
                '16:00' => '16:00',
                '17:00' => '17:00',
)))

date es de formato time, entonces al guardar el formulario me muestra este error: Error Call to a member function format() on string.

Pensaba 2 soluciones un datapicker con este bundle:
https://github.com/stephanecollot/DatetimepickerBundle

Pero el mismo no muestra solo las horas sino también las cabeceras del mes y año, además horas que no necesito tomar en cuenta y que pueden hacer que el usuario escoja mal.

Este es el problema. Estoy trabajando con symfony 3.2.x

Saludos

solución

La solucion que encontre es cada item transformarlo al tipo datetime según un ejemplo de la documentación de symfony:
http://symfony.com/doc/current/reference/forms/types/choice.html#group-by

El código quedo de la siguiente manera:

->add('horaI', ChoiceType::class, array(
            'label' => 'Hora Inicio',
            'placeholder' => 'Seleccione una hora',
            'attr' => array(
                    'class' => 'form-name form-control'
            ),
        'choices' => array(
    '08:00' => new DateTime('08:00'),
    '09:00' => new DateTime('09:00'),
    '10:00' => new DateTime('10:00'),
    '11:00' => new DateTime('11:00'),
    '12:00' => new DateTime('12:00'),
    '13:00' => new DateTime('13:00'),
    '14:00' => new DateTime('14:00'),
    '15:00' => new DateTime('15:00'),
    '16:00' => new DateTime('16:00'),
    '17:00' => new DateTime('17:00'),
)))

Espero les ayude.

Saludos

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *