I had the same problem as you. I don't know if there is a better solution to solve the problem but it works for me. The solution is override the entity form type.
forms.xml
<service id="acme.form.type.entity" class="Acme\AcmeBundle\Form\Type\EntityType">
<tag name="form.type" alias="entity" />
<argument type="service" id="doctrine" />
</service>
EntityType.php
<?php
namespace Acme\AcmeBundle\Form\Type;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Bridge\Doctrine\Form\Type\DoctrineType;
use Acme\AcmeBundle\Doctrine\Form\ChoiceList\ORMQueryBuilderLoader;
class EntityType extends DoctrineType
{
public function getLoader(ObjectManager $manager, $queryBuilder, $class)
{
return new ORMQueryBuilderLoader($queryBuilder, $manager, $class);
}
public function getName()
{
return 'entity';
}
}
ORMQueryBuilderLoader.php
namespace Acme\AcmeBundle\Doctrine\Form\ChoiceList;
use Symfony\Bridge\Doctrine\Form\ChoiceList\ORMQueryBuilderLoader as BaseORMQueryBuilderLoader;
class ORMQueryBuilderLoader extends BaseORMQueryBuilderLoader
{
private $queryBuilder;
public function __construct($queryBuilder, $manager = null, $class = null)
{
parent::__construct($queryBuilder, $manager, $class);
$this->queryBuilder = $queryBuilder($manager->getRepository($class));
}
public function getEntities()
{
$query = $this->queryBuilder->getQuery();
$query->setHint(
\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER,
'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'
);
return $query->execute();
}
}
Hope it helps.