Symfony2.5.3 Поле формы «сущность» — Не удалось загрузить тип & quot; сущность & quot;

У меня есть эта проблема с SF2 при добавлении поля формы типа «сущность». Это мой случай:

  1. У меня есть Country entity и CountryFormType
  2. У меня есть сетевой объект и NetworkFormType
  3. Этот NetworkFormType содержит поле Country, поэтому в моем NetworkFormType.php:

    $builder->add('country', 'entity', [
    'label' => $translator->trans('global.labels.country'),
    'data_class' => 'MyBundle\Entity\Country',
    'property' => 'name',
    'choices' => $countries
    ])
    

Я также объявил общедоступные установщики и получатели в моей сетевой сущности.
Кстати, я зарегистрировал свою форму как сервис:

mybundle.form.network:
class: MyBundle\Form\NetworkFormType
tags:
- { name: form.type, alias: mybundle_form_network }

Но это всегда приводит к:

Could not load type "entity"

Ссылка: Тип поля сущности

У кого-нибудь есть идея?

0

Решение

Это действительно странно.

Согласно этому API документация, EntityType класс находится внутри Doctrine Bridge,

Packagist: https://packagist.org/packages/symfony/doctrine-bridge

У вас это установлено? Может быть, вы не используете полный стек Symfony?

5

Другие решения

AFAIK, при использовании entityВы должны предоставить class параметр (это отмечено как требуется в документах)

$builder->add('country', 'entity', [
'label' => $translator->trans('global.labels.country'),
'class' => 'MyBundle\Entity\Country',
'property' => 'name',
'choices' => $countries
])

Я всегда вижу data_class используется для пользовательских типов

class TaskType extends AbstractType
{

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class'      => 'Acme\TaskBundle\Entity\Task'
));
}

public function getName()
{
return 'task'; // this is the name of your type, you can use it instead 'entity' in your add method
}

}

Увидеть http://symfony.com/doc/current/book/forms.html

2

По вопросам рекламы [email protected]