Symfony2如何在选择实体字段中设置选项值

Symfony2如何在选择实体字段中设置选项值,symfony,Symfony,我想知道是否有办法在选择列表中设置选项的值。此选择是一个选择实体字段 在我的代码中,一切正常。重点是,在我看来,我得到了value选项中每个字段的ID,我需要在其中有另一个字段 我正在使用option属性设置将在选项名称中显示的内容,但我还需要设置将在value字段中显示的内容 到目前为止,我还没有找到解决方案,所以如果有人能帮助我,我将不胜感激 我的一小部分领域是表单类型 ->add('fieldName','entity', array( 'class' => 'p

我想知道是否有办法在选择列表中设置选项的值。此选择是一个选择实体字段

在我的代码中,一切正常。重点是,在我看来,我得到了value选项中每个字段的ID,我需要在其中有另一个字段

我正在使用option属性设置将在选项名称中显示的内容,但我还需要设置将在value字段中显示的内容

到目前为止,我还没有找到解决方案,所以如果有人能帮助我,我将不胜感激

我的一小部分领域是表单类型

->add('fieldName','entity', array(
    'class'    => 'path\to\entity',
    'property' => 'name',
    'multiple' => true,
    'expanded' => false,
    )
谢谢

我返回的HTML代码如下所示

<select>
    <option value="4">ROLE_EXAMPLE</option>
</select>

角色示例
我想做的是得到这样的结果:

<select>
    <option value="specific_property_from_entity">ROLE_EXAMPLE</option>
</select>

角色示例

如果我理解您的问题,您是在问如何在实体字段上设置首选项


您可以查看以下答案:

您可以使用
选择
类型而不是
实体
,下面是一些示例:

class YourType extends AbstractType
{
    protected $em;

    // Injecting EntityManager into YourType
    public function __construct(EntityManager $em)
    {
        $this->em = $em;
    }

    private function getChoices()
    {
        // some logic here using $this->em
        // it should return key-value array, example:
        return [
            'foo' => 'bar',
            'test' => 'abc', // and so on...
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
         $builder->add('fieldName', 'choice', [
            'choices' => $this->getChoices(),
             ]
         )
    }

}

您可以传递选项值选项,该选项使用可调用或属性路径(getProperty())填充选项值

->add('fieldName','entity', array(
    'class'    => 'path\to\entity',
    'property' => 'name',
    'multiple' => true,
    'expanded' => false,
    'choice_value => 'Property'
)

如果您使用可调用来填充选项值,您需要检查字段值是否为空。

您能解释一下您希望得到什么类型的值吗?请将生成的hmtl和您希望得到的内容放在这里。@bartek我在上面举了一个例子。谢谢。@Sergiocata请参见上面的示例。我已经编辑了我的问题。Thanks@grogers是的,我也遇到了同样的问题,通过
choice
字段类型解决了。实际上我认为他想更改默认值选项。回答得好@bartek!但是getChoices()方法应该返回一个key=>value数组,在右边?返回数组('id'=>'lorem',value='lorem')谢谢@bartek,这正是我要找的东西。=)@是的,它应该返回键值数组。