Не найдено сопоставление для поля xy в классе xy - PullRequest
3 голосов
/ 25 февраля 2020

Технические характеристики

Symfony> 4.4.2 (не работает) Symfony 4.4.1 (работает)

У меня возникла проблема с моими переводами, потому что при каждом действии, которое включает переводы , symfony выдает ошибку типа "не найдено поле сопоставления 'sprache_id' в классе 'AnredeTranslation'"

Это не имеет смысла для меня, потому что поле есть и работало до тех пор, пока я go на symfony 4.4 - какого черта они изменились с 4.3 на 4.4, что эта ошибка постоянно отображается? Каждая сущность с переводом включена в эту проблему, поэтому весь мой проект не работает, кроме этой сущности, у которой нет переводов.

Кстати - Anrede - сущность, которая выдает в $ form-> handleRequest другие сущности, которые выдают ошибку на createForm.

Кто-то тоже получил эту проблему или я один с ней?

ОБНОВЛЕНИЕ:

Я могу обновить до Symfony 4.4.1 - из Symfony 4.4.2 эта ошибка (без сопоставления для поля sprache_id ...) будет создаваться в объектах create / mod с переводами, и я не знаю почему. Меня смущает только ошибка, потому что обработчик формы / запроса ищет поле sprache_id, но поле только sprache.

ПРИМЕР

Я опубликую sh здесь и сейчас сущность (самая короткая), чтобы показать мои определения 1034 *

<?php

namespace App\Form\Core\Kontakte;

use App\Entity\Core\Kontakt\Anrede;
use App\Entity\Core\Kontakt\AnredeTranslation;
use App\Entity\Core\Navigation\Navigation;
use App\Entity\Core\Navigation\NavigationTranslation;
use App\Entity\Core\Sprache\Sprache;
use App\Form\Transform\HiddenTransformer;
use App\Form\Type\SprachenType;
use App\Services\LocaleService;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\TranslatorInterface;

class AnredeTranslationType extends AbstractType
{
    /**
     * @var EntityManagerInterface
     */
    private $manager;
    /**
     * @var Translator
     */
    private $translator;
    /**
     * @var LocaleService
     */
    private $localeService;

    public function __construct(EntityManagerInterface $manager, TranslatorInterface $translator, LocaleService $localeService)
    {
        $this->manager = $manager;
        $this->translator = $translator;
        $this->localeService = $localeService;
    }

    private $options;
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $this->options = $options;
        $builder
            ->add('sprache', SprachenType::class, [
                'required' => true,
            ])
            ->add('name', TextType::class, [
                'required' => true,
                'label' => 'label.name',
                'help' => 'help.name'
            ])
            ->add('anredetext', TextType::class, [
                'required' => false,
                'label' => 'anredetext.name',
                'help' => 'anredetext.help',
            ])
            ->add('anrede', HiddenType::class)
        ;

        $builder->get('anrede')->addModelTransformer(new HiddenTransformer($this->manager, Anrede::class));
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => AnredeTranslation::class,
        ]);
    }
}

...