SonataAdmin:为枚举生成表单字段?

时间:2013-06-20 12:17:59

标签: symfony php-5.3 sonata-admin

是否有任何默认方式使Sonata Admin为mysql枚举生成表单字段作为某种选择?单选按钮,选择,等等,即文本字段,用户可以输入他想要的任何内容?它现在将它们视为字符串,渲染输入文本字段。

我以这种方式定义了我的枚举:

myProperty:
    type: enum
    length: 10
    column: my_property
    columnDefinition: ENUM('yeah', 'whatever')

并且它们是“真实的”枚举,即my_property列是数据库中的mySQL枚举类型。

我更喜欢一种解决方案,如果可能的话,不要求我将枚举值硬编码到Sonata的Admin.php文件中......

1 个答案:

答案 0 :(得分:2)

我认为最好的方法是使用选择字段,您可以使用从数据库获得的数组提供选择。

这里是example function for codeIgniter,您可以为Symfony2编写相同内容。

因此,在您的管理类中,您可以将字段添加到表单中,如下所示:

    $formMapper->add('my_property',
                'choice',
                 array('choices' => MyEnitity::get_enum_values('my_property') );

确保为数组提供键,因为奏鸣曲将使用它们作为值。