isvalid form createform symfony-forms symfony-2.3

symfony-forms - createform - symfony using form



Cómo cambiar el valor del campo de formulario en Symfony 2 (4)

Otra forma de establecer el valor es usar las opciones de formulario:

class ItemType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add(''tags'',''text'',array( ''required'' => false, ''attr'' => array(''name'' => ''tags''), ''mapped'' => false, ''data'' => $options[''tags_value''], )) ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( ''data_class'' => ''MyBundle/ItemBundle/Entity/Item'', ''cascade_validation'' => true, ''tags_value'' => ''default value if you want'', )); }

Y luego en el controlador:

public function editAction(Request $request, $id) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository(''MyBundleItemBundle:Item'')->find($id); $form = $this->createForm(new ItemType(), $entity, [''tags_value'' => ''test text'']); }

Tengo un formulario como el siguiente:

class ItemType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add(''tags'',''text'',array( ''required'' => false, ''attr'' => array(''name'' => ''tags''), ''mapped'' => false)) ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( ''data_class'' => ''MyBundle/ItemBundle/Entity/Item'', ''cascade_validation'' => true, )); } }

Mi acción de edición

public function editAction(Request $request, $id) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository(''MyBundleItemBundle:Item'')->find($id); $form = $this->createForm(new ItemType(), $entity); //$form->get(''tags'')->setValue(''test text''); // ^- this is what i would like to do -^ // ... }

Mientras edito un elemento, ¿Cómo puedo cambiar el valor del campo de formulario dentro del controlador antes de representarlo?


Puede cambiar el valor de las etiquetas en el controlador:

$request = $this->get(''request''); if ($request->getMethod() == ''POST'') { $form->bind($request); if $form->isValid()) { $entity->setTags(''test''); //persist ... } }


Puedes usar setData() para configurar datos en campos de formulario en Symfony, como esto:

$form = $formBuilder->getForm(); $form->get(''firstname'')->setData(''John'');


class ItemType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ... ->add(''tags'',''text'',array( ''required'' => false, ''attr'' => array(''name'' => ''tags'',''value''=>''newvalue''), ''mapped'' => false)) ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( ''data_class'' => ''MyBundle/ItemBundle/Entity/Item'', ''cascade_validation'' => true, )); } }