gpt4 book ai didi

symfony easyadmin 表单字段类型实体与过滤器列表

转载 作者:行者123 更新时间:2023-12-04 12:42:49 26 4
gpt4 key购买 nike

我使用 symfony 3.4 和 easycorp/easyadmin-bundle 1.17

这是我的类“报价”,“工匠”字段是“人”实体的“注册中”(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



预先感谢您的帮助

最佳答案

您应该在这里使用 configureOptions,而不是使用 buildForm 方法。这样你的表单就不会被另一个导致数组的子表单扩展。

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;
}
}

关于symfony easyadmin 表单字段类型实体与过滤器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52199397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com