我想更新数据,并且需要使用表单生成器来创建表单。我看到了类似的问题,但这对我不起作用。
我的表单生成器。我认为可以。
class GeneralInfoType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username', TextType::class, ['label' => false])
->add('email', EmailType::class, ['label' => false])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
]);
}
}
我在树枝上的表格。我在表单上发送ID当前用户。
{{ form_start(form, {'action': path('updateInfo',{'id':users.id}), 'method': 'GET'}) }}
{{ form_row(form.username, {'value' : users.username, 'attr': {'class': 'form-control'} }) }}
{{ form_row(form.email, {'value' : users.email, 'attr': {'class': 'form-control'} } ) }}
<button type="submit" class="btn btn-primary">Update</button>
{{ form_end(form) }}
我的控制器。
/**
* @Route("user/profile/{id}", name="updateInfo")
* @param $id
* @param Request $request
* @return Response
*/
public function updatePersonalInfoAction($id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('App:User')->find($id);
$form = $this->createForm(GeneralInfoType::class, $user);
$username = $form->get('username')->getData();
dump($username);
}
当我尝试转储用户名时,我从服务器获取了""
或null。
答案 0 :(得分:0)
为您的控制器尝试一下:
/**
* @Route("user/profile/{id}", name="updateInfo")
* @param $id
* @param Request $request
* @return Response
*/
public function updatePersonalInfoAction($id, Request $request)
{
$user = $em->getRepository('App:User')->find($id);
$form = $this->createForm(GeneralInfoType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$username = $form->get('username')->getData();
dump($username);
// you can save the update user info with this:
$user = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
}
return $this->render('insert_twig_file_path/name', [
'form' => $form->createView()
]);
}
您还可以利用一些自动魔术的symfony函数来简化一点:
/**
* @Route("user/profile/{id}", name="updateInfo")
* @param Request $request
* @param User $user
* @return Response
*/
public function updatePersonalInfoAction(Request $request, User $user)
{
$form = $this->createForm(GeneralInfoType::class, $user);
... the rest unchanged ...
}