Проект: Symfony 2.4, FOSUserBundle, SonataUserBundle.
Задача
У меня есть User
объект и форма профиля для него. Я хочу добавить флажок для подписки напоминания. Это сохраняется в другом объекте «Настройка» (с односторонним отношением «Настройка» -> «Пользователь»). Если в «Настройках» есть строка для пользователя, следует поставить галочку, если строки нет - снять галочку. Итак, мне нужно:
- рендерить флажок
- загрузить данные
- сохранить данные
Реализация
1. Флажок «Визуализировать»
Я знаю, что это зависит от типа поля (потому что я думаю, что мог бы использовать тип entity
), но теперь у меня есть этот код:
class ProfileFormType extends ProfileType
{
$builder
->add("subscribeReminder", "checkbox",
array(
"mapped" => false,
'required' => false,
)
);
}
2. Загрузите данные
Я думаю, что это можно сделать, используя 'class' и 'query_builder' в параметрах поля, но мне это не удалось. Необходимо установить флажок в значение true, если настройка существует.
3. Сохраните данные
Я думаю, что могу сохранить данные в FormHandler->onSuccess() (передавая репозиторий конструктору). Нужно удалить строку или создать новую.
По дороге
Я полностью потерялся в документации. Можно реализовать EventListeners, EventSubscribers. Пробовал разные подходы безуспешно. Я думаю (надеюсь) есть что-то проще.