【问题标题】:How to populate form field with field from entity class如何使用实体类中的字段填充表单字段
【发布时间】:2018-06-26 11:45:48
【问题描述】:

我正在尝试让我的一个实体类中的特定字段出现在表单的下拉列表中。实体确实具有一对一的关系,尽管我试图检索到我的表单的字段不是与另一个类相关的字段。

为了使事情更简单,我还希望仅在下拉列表中显示该字段的不同值。我已经尝试过类似的事情:How to select distinct query using symfony2 doctrine query builder? 但还没有让它工作。我产生了诸如“警告:spl_object_hash() 期望参数 1 是对象,给定字符串”之类的错误

以下是我目前写的...

在表单的类中...

 $builder
            ->add('typeOfPosition', EntityType::class, array(
                  'class' => Choices::class,
                  'label' => 'Type of Position: ',
                  'query_builder' => function(EntityRepository $er){
                      return $er->createQueryBuilder('c')
                        ->select('DISTINCT c.type');
                  },

以及表单所在的实体:

/**
 * @ORM\OneToOne(targetEntity="Position", inversedBy="division")
 * @ORM\JoinColumn(name="position", referencedColumnName="id")
 */
private $position;

/**
 * @var string
 *
 * @ORM\Column(name="type", type="string", length=255)
 */
private $type;

它是关系实体:

/**
 * @var string
 *
 * @ORM\OneToOne(targetEntity="Choices", mappedBy="position")
 */
private $division;

【问题讨论】:

    标签: php forms symfony doctrine-orm


    【解决方案1】:

    让我们一步一步来。 要获取实体下拉列表,您应该使用“属性”选项来指定需要哪个选项

    $builder->add('typeOfPosition', EntityType::class, array(
        'class' => Position::class,
        'property' => 'type',
    ));
    

    我知道你想要有不同的标签,但如果你做一个不同的,你怎么知道选择的 id 是好的?

    1 => TYPE_1
    2 => TYPE_1
    3 => TYPE_3
    

    你为什么要做一个独特的?在您的下拉列表中选择的 id 是什么? 无论如何,这是如何做一个独特的:How to select distinct query using symfony2 doctrine query builder?

    【讨论】:

    • 哦,哇,是的,这确实让我得到了类型值,但是现在我如何只得到不同的类型值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2018-05-04
    • 1970-01-01
    • 2012-04-28
    • 2011-02-18
    相关资源
    最近更新 更多