symfony3.4表单EntityType字段类,对数据进行排序

要对 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 表单字段中的实体数据进行排序的功能。

你可能感兴趣的:(symfony)