Symfony 4 Форма EntityType Form Builder Ошибка «Недопустимый класс» - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь добавить поле выбора формы, используя значения в таблице БД. В официальной документации это описано, как на рисунке ниже:

enter image description here

Я реализовал таким же образом, но я получение Expection:

У сущности "App \ Entity \ Definition" для repositoryClass установлено значение "App \ Entity \ DefinitionRepository", но это недопустимый класс. Проверьте название вашего класса. Если это должен быть идентификатор службы, убедитесь, что эта служба существует и помечена как "doctrine .repository_service".

Мой код FormType:

namespace App\Form;

use App\Entity\Company;
use App\Entity\Definition;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class CompanyDetailType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', null, ['label' => 'Company Name'])
            ->add('type', EntityType::class, [
                'class' => Definition::class,
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('d');
                },
                'choice_label' => 'name',
                'label' => 'Company Type'
            ]);
    }

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

Мой DefinitionRepository:

namespace App\Repository;

use App\Entity\Definition;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;

class DefinitionRepository extends ServiceEntityRepository
{

}

поле типа $ организации:

/**
 * @var Definition
 *
 * @ORM\ManyToOne(targetEntity="App\Entity\Definition")
 */
private $type;
...