首页 > 解决方案 > 用于订购的附加选择字段

问题描述

我想设置新条目的顺序。我需要在现有条目之一之后的第一个位置和顺序

我不知道如何在 Symfony 4.2 中管理这个

 public function buildForm(FormBuilderInterface $builder, array $options) {
   $builder
    ->add('nameDe')
    ->add('nameEn')
    ->add('descriptionDe')
    ->add('descriptionEn')
    ->add('rank', EntityType::class, [
        'class' => ProductType::class,
        'query_builder' => function (EntityRepository $er) {
        return $er->createQueryBuilder('p')
        ->orderBy('p.rank', 'ASC');
        },
        'choice_label' => 'nameDe', 
    ])
    ->add('active')
    ->add('creatDate')
    ->add('updateDate', DateTimeType::class, array('data' => new \DateTime()));
}

我有这个:

<select id="product_type_rank" name="product_type[rank]">
    <option value="1">Internetseiten</option>
    <option value="2">Printmedia</option>
</select>

我需要这样的东西

<select id="product_type_rank" name="product_type[rank]">
    <option value="0">At the beginning</option>
    <option value="1">after Internetseiten</option>
    <option value="2">after Printmedia</option>
</select>

标签: formssymfony

解决方案


如果要在选项中添加自定义文本,可以使用如下choice_label选项:

public function buildForm(FormBuilderInterface $builder, array $options) {
   $builder
    ->add('nameDe')
    ->add('nameEn')
    ->add('descriptionDe')
    ->add('descriptionEn')
    ->add('rank', EntityType::class, [
        'class' => ProductType::class,
        'query_builder' => function (EntityRepository $er) {
            return $er->createQueryBuilder('p')
             ->orderBy('p.rank', 'ASC');
        },
        'choice_label' => function($productType) {
             return 'after ' . $productType->getNameDe();
        },
        'placeholder' => 'At the beginning',
    ])
    ->add('active')
    ->add('creatDate')
    ->add('updateDate', DateTimeType::class, array('data' => new \DateTime()));
}

有了这个,您将获得预期的结果。

您可以将特定的 getter 添加到您的 ProductType 实体类中并直接在 中使用它choice_label,如下所示:

产品类型.php

class ProductType {
    ...

    getNameDeWithCustomText() {
        return 'after ' . $this->getNameDe();
    }
}
'choice_label' => 'nameDeWithCustomText',

推荐阅读