Вдруг кому-то еще понадобится. В итоге сделал с помощью HiddenType и трансформера. HiddenType ожидает текст, в качестве значения, но в language у нас объект Language.
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('language', HiddenType::class)
->get('language')
->addModelTransformer(new CallbackTransformer(
function ($language) {
return $language->getId();
},
function ($id): ?Language {
return $this->entityManager
->getRepository(Language::class)
->find($id);
}
));
}
Поэтому когда подставляем значение в форму, с помощью трансформера передаем id. Когда форма отправляется на сервер, обратно переводим в объект Language. В идеале трансформер нужно перенести в отдельный класс, со всеми проверками и т.д, но тут просто в качестве примера.