Как правильно обновить сущность, которая содержит путь к изображению? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть форма, которую я использую как для регистрации, так и для редактирования информации о пользователях. Эта форма содержит свойство картинки профиля, на которое я положил @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()
        ]);
    }

1 Ответ

0 голосов
/ 09 ноября 2019

Валидатор проверит, содержит ли ваш объект изображение, и, похоже, это не тот случай, когда вы обновляете ваш объект. Обходной путь должен использовать group валидация , вы определяете определенную группу для свойства, имеющего Assert Image, и в методе getGroupSequence вы возвращаете группу, если вы находитесь в процессе создания (id == null) или если свойство установлено.

...