/**
  * 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;
 }
예제 #2
0
 /**
  * {@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());
         }
     }
 }