Как сделать «отображенными» виртуальные поля в Symfony

У меня есть виртуальные поля в моем объекте, которые не имеют отношения к базе данных, но я использую их в своей форме.

Я хочу использовать его в прослушивателе событий preUpdate для заполнения реального поля, но preUpdate поднимается только при изменении реальных полей, а не виртуальных.

Как сделать так, чтобы событие preUpdate возникало при изменении виртуальных полей?

спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
0
179
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку ваши виртуальные поля не имеют сопоставлений в базе данных - Doctrine даже не знает о них, потому что берет информацию о сущности из ClassMetadata, а не из самого объекта.

Вам необходимо вручную обрабатывать всю необходимую логику для этих виртуальных полей. Скорее всего вам нужно добавить слушателя к событию preFlush и реализовать свой механизм генерации событий.

Я думал, что есть простое решение. Но большое спасибо за ответ.

fdor 12.02.2019 09:31

Вы всегда можете попробовать изменить данные, используя события формы. Например, рассчитать данные с помощью некоторой вспомогательной службы, добавив значение в поле сопоставления вашей сущности после отправки формы.

Другие вопросы по теме