0

这是我的表单主要功能:

/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('naam', 'text', array(
            'label' => "Naam",
            'attr' => array(
                'placeholder' => "Vul hier een functionele omschrijving in van de deltaload",
            )
        ))
        ->add('tabel', 'choice', array(
                                        'empty_value' => 'Kies een tabel',
                                        'choices' => $this->loadChoiceList()->getChoices()
                ))

    ;
}

这是 loadChoiceList() 函数:

    protected function loadChoiceList()
{
    $array = array(
        'Preview' => 'Preview',
        'Hidden'  => 'Hidden',
        'Live'    => 'Live'
    );
    $choices = new SimpleChoiceList($array);

    return $choices;
}

查看此表单时,我可以选择三个已定义的选项之一。但是在将其保存到数据库时,它会根据选择保存 0、1 或 2。

我怎样才能让它保存值而不是键?

我也尝试了 ChoiceList() 类,但结果没有任何区别。

作为记录,我意识到这不是标准化的数据库设计,但这是用简化示例解释我的问题的简化方式。

4

1 回答 1

0

答案很简单。

改变这个:

'choices' => $this->loadChoiceList()->getChoices()

至:

'choice_list' => $this->loadChoiceList()

或者,如果您想使用 'choices' 选项,您可以使用您的函数返回常规数组,而不是 SimpleChoiceList 对象。

于 2014-05-06T19:09:34.753 回答