diff --git a/src/Form/EventListener/TranslationsFormsListener.php b/src/Form/EventListener/TranslationsFormsListener.php index aa4e1fd..e2b9a77 100644 --- a/src/Form/EventListener/TranslationsFormsListener.php +++ b/src/Form/EventListener/TranslationsFormsListener.php @@ -43,11 +43,14 @@ public function preSetData(FormEvent $event): void public function submit(FormEvent $event): void { + $form = $event->getForm(); + $formOptions = $form->getConfig()->getOptions(); + $data = $event->getData(); foreach ($data as $locale => $translation) { // Remove useless Translation object - if ((method_exists($translation, 'isEmpty') && $translation->isEmpty()) // Knp + if ((method_exists($translation, 'isEmpty') && $translation->isEmpty() && !\in_array($locale, $formOptions['required_locales'], true)) // Knp || empty($translation) // Default ) { $data->removeElement($translation); diff --git a/src/Form/EventListener/TranslationsListener.php b/src/Form/EventListener/TranslationsListener.php index 2e0f068..5098646 100644 --- a/src/Form/EventListener/TranslationsListener.php +++ b/src/Form/EventListener/TranslationsListener.php @@ -68,11 +68,14 @@ public function preSetData(FormEvent $event): void public function submit(FormEvent $event): void { + $form = $event->getForm(); + $formOptions = $form->getConfig()->getOptions(); + $data = $event->getData(); foreach ($data as $locale => $translation) { // Remove useless Translation object - if ((method_exists($translation, 'isEmpty') && $translation->isEmpty()) // Knp + if ((method_exists($translation, 'isEmpty') && $translation->isEmpty() && !\in_array($locale, $formOptions['required_locales'], true)) // Knp || empty($translation) // Default ) { $data->removeElement($translation);