如何正确更新包含图像路径的实体?

问题描述 投票:0回答:1

我有一个用于注册和编辑用户信息的表格。此表单包含一个我将@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()
        ]);
    }
symfony symfony-forms symfony-validator
1个回答
0
投票

[验证器将检查您的对象是否包含图像,而更新对象时似乎不是这样。一种解决方法是使用group validation定义具有断言图像的属性的特定组,然后在方法getGroupSequence中创建时返回该组(id == null)或属性已设置。

© www.soinside.com 2019 - 2024. All rights reserved.