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

标签 symfony

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

在我的代码中一切正常。关键是,在我看来,我在 value 选项中获得了每个字段的 ID,我需要在那里有另一个字段。

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

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

表单类型中我字段的一小部分。

->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>

最佳答案

您可以使用 choice输入而不是 entity ,这里有一些例子:

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(),
             ]
         )
    }

}

You can read about creating field types as a service

关于Symfony2 如何在选择实体字段中设置选项值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264327/

相关文章:

php - SImple Symfony2 'Front Page' Controller 、路由器和模板。为什么我仍然看到欢迎页面?

symfony - 在Doctrine2/Symfony2中创建索引会引发语义错误

php - 如何将存储库注入(inject) Symfony 中的服务?

php - Symfony2 FOSRESTBundle REST API 返回 PDF

repository - Symfony2 自定义存储库、延迟加载和代理对象

php - Symfony:获取两个表的结果

php - 在 Symfony 序列化中更改序列化属性名称

Gaufrette 的 Symfony 音频流

symfony - API 平台 - 具有 JWT 身份验证的 Swagger UI

symfony - 创建可用于所有包的 Symfony2 帮助器类的正确方法