/** * Returns translated Doctrine query instance * * @param QueryBuilder $qb A Doctrine query builder instance * @param string $locale A locale name * * @return Query */ protected function getTranslatedQuery(QueryBuilder $qb, $locale = null) { $query = $qb->getQuery(); $query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'); if ($locale === null && $this->localeProvider !== null) { $locale = $this->localeProvider->getCurrentLocale(); } $query->setHint(TranslatableListener::HINT_TRANSLATABLE_LOCALE, $locale); return $query; }
/** * {@inheritdoc} */ public function mapFormsToData($forms, &$data) { /** * @var $form FormInterface */ foreach ($forms as $form) { $entityInstance = $data; if (false !== in_array($form->getName(), $this->property_names)) { $translations = $form->getData(); foreach ($this->localeProvider->getLocales() as $locale) { if (isset($translations[$locale])) { $this->repository->translate($entityInstance, $form->getName(), $locale, $translations[$locale]); } } } else { if (false === $form->getConfig()->getOption('mapped')) { continue; } $accessor = PropertyAccess::createPropertyAccessor(); $accessor->setValue($entityInstance, $form->getName(), $form->getData()); } } }