Я использую symfony 3.4 и easycorp / easyadmin-bundle 1.17
Это мой класс "Quotation", поле "artisan" - это "под регистрацией" сущности "Person" (person.type = 1):
class Quotation
{
/** others fields... */
/**
* 1 => 'artisan', 2 => 'customer'
*/
private $type;
/**
* @ORM\ManyToOne(targetEntity = "Person", inversedBy = "artisanQuotations", cascade= { "persist" })
* @ORM\JoinColumn(name = "artisan_id", referencedColumnName = "id")
*/
private $artisan;
/** getters and setters ... */
У меня проблема с полем формы, использующим настраиваемый тип поля
form:
fields:
...
- { property: 'artisan', label: '', type: 'AppBundle\Form\Field\ArtisanType' }
Я создал этот тип поля формы, чтобы иметь возможность фильтровать список благодаря query_builder:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('artisan', EntityType::class, array(
'class' => 'AppBundle:Person',
'label' => false,
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('person')
->where('person.type = 1');
},
'attr' => array('data-widget' => 'select2'),
'multiple' => false,
'expanded'=> false
));
}
моя форма отображается отлично, но когда я отправляю эту форму, у меня появляется ошибка:
Expected argument of type "AppBundle\Entity\Person", "array" given
Заранее спасибо за вашу помощь




Вместо использования метода buildForm вы должны использовать здесь configureOptions. Таким образом, ваша форма не расширяется другой подчиненной формой, которая приводит к массиву.
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ArtisanType extends AbstractType
{
/**
* @param \Symfony\Component\OptionsResolver\OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'class' => 'AppBundle:Person',
'label' => false,
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('person')
->where('person.type = 1');
},
'attr' => array('data-widget' => 'select2'),
'multiple' => false,
'expanded'=> false,
]);
}
/**
* @return string|null
*/
public function getParent()
{
return EntityType::class;
}
}
моя проблема не решена, я обновил сообщение, может ли кто-нибудь мне помочь, потому что я не могу найти решение этой проблемы