Closed tamert closed 3 years ago
Hi, this might be impossible to fix without real code. Could you provide pull-request with test case to reproduce?
I change static::class
in \Knp\DoctrineBehaviors\Model\Translatable\TranslatableMethodsTrait::getTranslationEntityClass
to self::class
and it works. Makes sance. In tag 1.6.0 there was __CLASS__
.
@burrag Thank for the solution
I change
static::class
in\Knp\DoctrineBehaviors\Model\Translatable\TranslatableMethodsTrait::getTranslationEntityClass
toself::class
and it works. Makes sance. In tag 1.6.0 there was__CLASS__
.
Thanks ! same problem and resolved
With the latest 2.6.2 this is not solved,you need to use self
instead of static
in referred above case. Here's some debug output what happens:
self::class: App\Entity\Location
static::class: App\Entity\Location
#0 [internal function]: App\Entity\Location::getTranslationEntityClass()
#1 /var/www/html/vendor/knplabs/doctrine-behaviors/src/EventSubscriber/TranslatableEventSubscriber.php(114): ReflectionMethod->invoke()
#2 /var/www/html/vendor/knplabs/doctrine-behaviors/src/EventSubscriber/TranslatableEventSubscriber.php(54): Knp\DoctrineBehaviors\EventSubscriber\TranslatableEventSubscriber->mapTranslatable()
#3 /var/www/html/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php(63): Knp\DoctrineBehaviors\EventSubscriber\TranslatableEventSubscriber->loadClassMetadata()
#4 /var/www/html/vendor/doctrine/orm/src/Mapping/ClassMetadataFactory.php(250): Symfony\Bridge\Doctrine\ContainerAwareEventManager->dispatchEvent()
#5 /var/www/html/vendor/doctrine/doctrine-bundle/src/Mapping/ClassMetadataFactory.php(18): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata()
#6 /var/www/html/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(343): Doctrine\Bundle\DoctrineBundle\Mapping\ClassMetadataFactory->doLoadMetadata()
#7 /var/www/html/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(207): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata()
#8 /var/www/html/vendor/doctrine/orm/src/EntityManager.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor()
#9 /var/www/html/vendor/doctrine/orm/src/UnitOfWork.php(3011): Doctrine\ORM\EntityManager->getClassMetadata()
-----------------
self::class: App\Entity\OnboardingMessage
static::class: App\Entity\OnboardingMessage
#0 [internal function]: App\Entity\OnboardingMessage::getTranslationEntityClass()
#1 /var/www/html/vendor/knplabs/doctrine-behaviors/src/EventSubscriber/TranslatableEventSubscriber.php(114): ReflectionMethod->invoke()
#2 /var/www/html/vendor/knplabs/doctrine-behaviors/src/EventSubscriber/TranslatableEventSubscriber.php(54): Knp\DoctrineBehaviors\EventSubscriber\TranslatableEventSubscriber->mapTranslatable()
#3 /var/www/html/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php(63): Knp\DoctrineBehaviors\EventSubscriber\TranslatableEventSubscriber->loadClassMetadata()
#4 /var/www/html/vendor/doctrine/orm/src/Mapping/ClassMetadataFactory.php(250): Symfony\Bridge\Doctrine\ContainerAwareEventManager->dispatchEvent()
#5 /var/www/html/vendor/doctrine/doctrine-bundle/src/Mapping/ClassMetadataFactory.php(18): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata()
#6 /var/www/html/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(343): Doctrine\Bundle\DoctrineBundle\Mapping\ClassMetadataFactory->doLoadMetadata()
#7 /var/www/html/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(207): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata()
#8 /var/www/html/vendor/doctrine/orm/src/EntityManager.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor()
#9 /var/www/html/vendor/doctrine/orm/src/UnitOfWork.php(3011): Doctrine\ORM\EntityManager->getClassMetadata()
-----------------
self::class: App\Entity\Location
static::class: Proxies\__CG__\App\Entity\Location
#0 /var/www/html/vendor/a2lix/translation-form-bundle/src/Form/EventListener/TranslationsListener.php(124): App\Entity\Location::getTranslationEntityClass()
#1 /var/www/html/vendor/a2lix/translation-form-bundle/src/Form/EventListener/TranslationsListener.php(47): A2lix\TranslationFormBundle\Form\EventListener\TranslationsListener->getTranslationClass()
#2 /var/www/html/vendor/symfony/event-dispatcher/EventDispatcher.php(220): A2lix\TranslationFormBundle\Form\EventListener\TranslationsListener->preSetData()
#3 /var/www/html/vendor/symfony/event-dispatcher/EventDispatcher.php(56): Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
#4 /var/www/html/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php(30): Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
#5 /var/www/html/vendor/symfony/form/Form.php(289): Symfony\Component\EventDispatcher\ImmutableEventDispatcher->dispatch()
#6 /var/www/html/vendor/symfony/form/Extension/Core/DataMapper/DataMapper.php(50): Symfony\Component\Form\Form->setData()
#7 /var/www/html/vendor/symfony/form/Form.php(323): Symfony\Component\Form\Extension\Core\DataMapper\DataMapper->mapDataToForms()
#8 /var/www/html/vendor/symfony/form/Form.php(412): Symfony\Component\Form\Form->setData()
#9 /var/www/html/vendor/symfony/form/FormBuilder.php(176): Symfony\Component\Form\Form->initialize()
As you can note, the static keyword resolves the class name before it is initialized properly to a Proxy class instead of actual entity.
Only one record exploded this error
The form's view data is expected to be an instance of class Proxies__CG__\App\Entity\UserLevelTranslation, but is an instance of class App\Entity\UserLevelTranslation. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms an instance of class App\Entity\UserLevelTranslation to an instance of Proxies__CG__\App\Entity\UserLevelTranslation.
Why one record " instance of Proxies__CG__\App\Entity\UserLevelTranslation." ? I have no idea