要对 EntityType
表单字段中的数据进行排序,你可以使用 query_builder
选项来定义一个自定义的查询构建器。在查询构建器中,你可以使用 orderBy
方法来指定排序规则。在你的表单类中,将 query_builder
选项添加到 EntityType
字段的配置中,并在查询构建器中使用 orderBy
方法对实体数据进行排序。
以下是一个示例:
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Doctrine\ORM\EntityRepository;
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('publisherId', EntityType::class, [
'label' => '出版社',
'required' => false,
'placeholder' => '请选择出版社',
'class' => 'AppBundle:Publisher',
'choice_label' => function ($Publisher) {
return $Publisher->getTitle();
},
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('p')
->orderBy('p.id', 'ASC');
},
]);
}
// ...
}
在上面的代码中,我们在 query_builder
选项中定义了一个匿名函数。在这个函数中,我们使用实体类的存储库(EntityRepository
)创建了一个查询构建器,并使用 orderBy
方法按照 TpPublisher
实体的 publisherName
属性进行升序排序。保存并重新加载表单后,TpPublisher
实体的数据将按照指定的排序顺序显示在下拉列表中。希望这个示例能帮助你实现对 EntityType
表单字段中的实体数据进行排序的功能。