我有一个用于注册和编辑用户信息的表格。此表单包含一个我将@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()
]);
}
[验证器将检查您的对象是否包含图像,而更新对象时似乎不是这样。一种解决方法是使用group
validation定义具有断言图像的属性的特定组,然后在方法getGroupSequence
中创建时返回该组(id == null)或属性已设置。