vez en la aplicación • Implementan Symfony\Component\Form\FormTypeInterface • Se pueden heredar • Pueden ser servicios • Symfony incorpora muchos types built-in
Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class UserType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name', 'text'); $builder->add('email', 'email'); $builder->add('password', 'password'); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefault('data_class', User::class); } public function getName() { return 'user'; } }
password percent search url Choice fields choice entity country language locale timezone currency Date & Time date datetime time birthday Other fields checkbox radio file Group fields collection repeated Hidden fields hidden Button fields button submit reset
{{ form_row(form.password) }} {{ form_rest(form) }} <button type="submit">Submit</button> </form> Mostrando cada elemento del formulario Muestra los elementos restantes
$data, $options); $form->handleRequest($request); if (!$form->isValid()) { throw new BadRequestHttpException('Invalid form'); } // Persistencia de datos return new Response('Success'); }
$data, $options); $form->handleRequest($request); if (!$form->isValid()) { throw new BadRequestHttpException('Invalid form'); } // Persistencia de datos return new Response('Success'); } bind success error submit validación
nuestro modelo. • Permite modificar el formulario en base a los datos del modelo • Permite modificar el formulario en base al estado de mi aplicación PRE_SET_DATA
$request •Validamos • Error • Mostramos el formulario indicando errores • Retornamos STATUS 400 • Éxito • Persistimos entidades • Mensaje de éxito (Ej: Redirección a un listado) Submit
$data, $options); $form->handleRequest($request); if (!$form->isValid()) { throw new BadRequestHttpException('Invalid form'); } // Persistencia de datos return new Response('Success'); }
$data, $options); $form->handleRequest($request); if (!$form->isValid()) { throw new BadRequestHttpException('Invalid form'); } // Persistencia de datos return new Response('Success'); } Atención a la respuesta de la acción