Hola con este simple código hacía que Symfony me cree un simple formulario para subir un archivo:
$form = $this->createFormBuilder()->add('submitFile', 'file', array('label' => 'File to Submit'))->getForm();
Ahora en Symfony3 me dice: Could not load type "file". Vueltas y mas vueltas por la ayuda de Symfony más Google no le encuentro la vuelta ...
Respuestas
Hola @xub,
Me parece mucho que en Symfony 3 debes colocar algo como esto,
->add('file', FileType::class, array('label' => 'File to Submit',))
No se si ese sea el problema,
@miguelplazasr
La respuesta correcta es la que te ha dado @miguelplazasr. En el archivo [UPGRADE to 3.0]() tienes todos los detalles sobre los cambios necesarios. En la sección Form puedes leer lo siguiente:
Type names were removed. Instead of referencing types by name, you must reference them by their fully-qualified class name (FQCN) instead:
Before:
$form = $this->createFormBuilder() ->add('name', 'text') ->add('age', 'integer') ->getForm();
After:
use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\TextType; $form = $this->createFormBuilder() ->add('name', TextType::class) ->add('age', IntegerType::class) ->getForm();
@javiereguiluz
y probaron este código que están poniendo aca ???
use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\TextType; $form = $this->createFormBuilder() ->add('name', TextType::class) ->add('age', IntegerType::class) ->getForm();
así da error de sintaxis es como que pide comillas en TextType::class
Si lo pongo así
use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\TextType; $form = $this->createFormBuilder() ->add('name', 'TextType::class') ->add('age', 'IntegerType::class') ->getForm();
Could not load type "TextType::class"
@xub
@xub la constante ::class
solo funciona si usas PHP 5.5 o superior. Si no, tendrás que escribir el código así (es bastante feo y aburrido, pero no hay otra alternativa posible):
$form = $this->createFormBuilder() ->add('name', 'Symfony\Component\Form\Extension\Core\Type\TextType') ->add('age', 'Symfony\Component\Form\Extension\Core\Type\IntegerType') ->getForm();
@javiereguiluz
Es muy raro tengo Debian 8 y 5.6.17-0+deb8u1 debería funcionar ...
Creo que empiezo a entender porque los desarrolladores están migrando a Laravel jaja 3 días para tratar de entender lo que esta gente pensó como formidable para modificar los formularios y no funciona ni para atrás ni para adelante
@xub
En tu anterior mensaje decías que cuando usas este estilo:
use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\TextType; $form = $this->createFormBuilder() ->add('name', TextType::class) ->add('age', IntegerType::class) ->getForm();
Te da un error de sintaxis. Como la parte TextType::class
parece que está bien, ¿puede ser que haya algún pequeño error de sintaxis en otra parte? ¿Puedes mostrarnos algo más de información sobre el error?
@javiereguiluz
No lo tomaba el Netbeans tenía seteado PHP 5.3 en el proyecto ahora lo toma bien
<form action="" method="post" {{ form_enctype(form) }}>
Lo tuve que cambiar a:
{{ form_start(form) }}
ahora me tira error en
Attempted to call an undefined method named "bind" of class "Symfony\Component\Form\Form".
A seguir buscando.
Cuando me fui de Codeigniter vi como mejor opción Symfony, en varios foros vi mucha gente quejarse y decir que siempre cambiaban la forma de armar los formularios en todos los saltos de versiones y esto generaba mucho rechazo desde el lado de los desarrolladores, se ve que en esta versión 3 vuelven con lo mismo... la verdad que me gusta mas Symfony que Laravel, no se porque se estan pasando a Laravel mucha gente... sera por estos detalles ??? Saludos
@xub
A pesar de los cambios, una cosa buena que tiene Symfony es que siempre documenta todo. Por ejemplo el cambio del método bind()
está explicado aquí, por lo que no tienes que buscar en Google:
The methods Form::bind() and Form::isBound() were removed. You should use Form::submit() and Form::isSubmitted() instead.
Before:
$form->bind(array(...));
After:
$form->submit(array(...));
El resto de cambios de los formularios los puedes consultar en: https://github.com/symfony/symfony/blob/master/UPGRADE-3.0.md#form
@javiereguiluz
si si ya lo había encontrado en la pagina
Gracias
a seguir con la 3.0 creo que ya quedo todo el proyecto en orden
Saludos
@xub
@xub si te vas a Laravel, seguirás usando Symfony :v...
@cristian_angulo