У меня есть эта проблема с SF2 при добавлении поля формы типа «сущность». Это мой случай:
Этот 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"
Ссылка: Тип поля сущности
У кого-нибудь есть идея?
Это действительно странно.
Согласно этому API документация, EntityType
класс находится внутри Doctrine Bridge
,
Packagist: https://packagist.org/packages/symfony/doctrine-bridge
У вас это установлено? Может быть, вы не используете полный стек Symfony?
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
}
}