【发布时间】:2020-03-05 09:31:25
【问题描述】:
我有一个用于注册和编辑用户信息的表格。此表单包含我在其上放置@Assert\Image 的个人资料图片属性。
我通过注册表单成功创建了一个新用户,但是当我尝试编辑用户信息时(使用PATCH 方法,只是为了更新需要更新的内容)我遇到了一个错误,显示“文件无法被发现”的消息。
我想这是因为存储在数据库中的路径是一个字符串,而我的@Assert\Image 想要一张图片。
我不确定我应该如何管理这种更新。
当我dd()$user 提交后,我看到profilePicture 属性仍然包含保存在数据库中的路径。
这是我关于表单处理的功能:
public function myProfile(Request $request)
{
$user = $this->getUser();
$form = $this->createForm(UserFormType::class, $user, ['method' => 'PATCH']);
if ($request->isMethod('PATCH')){
$form->submit($request->request->get($form->getName()), false);
if ($form->isSubmitted() && $form->isValid()) {
//...
}
}
//if no request just display the page
return $this->render('connected/myProfile.html.twig', [
'user' => $user,
'userProfileForm' => $form->createView()
]);
}
【问题讨论】:
-
当您更新您的用户时,我猜您没有为个人资料图片字段提供任何值?如果是这样,您应该尝试将
'data' => null附加到UserFormType类中的个人资料图片字段选项中。这样,存储的值将不会提供给您的表单。此外,您可能应该定义两个表单验证组(用于添加/编辑用户),如果您有一些约束(例如@NotBlank),您只想申请添加表单。 More details here
标签: symfony symfony-forms symfony-validator