Symfony3:为什么选择提交关键字文本而不是其值


Symfony3: Why choices submit key text instead of its value

Symfony version 3.1.3

我正在生成一个选择列表从数据库像下面,它工作得很好。

class ClassType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('class',
                      EntityType::class,
                      array('class'         => 'PIE10Bundle:Classes',
                            'expanded'      => false,
                            'multiple'      => false,));
        // some other form elements
    }    
}

在网页中,它给出了如下的HTML选择,

<select name="class[class]" id="class_class">
    <option value="6">1A</option>
    <option value="7">4C</option>
</select>

,在控制器中,我得到提交的数据,并调试如下,

if( $form->isSubmitted() && $form->isValid() )
{
    $cName  = $form['class']->getData();
    echo $cName;
    die;
}

我的结果是1A4C(取决于选择),但不是67。我希望得到选择列表的值,但不是它的关键文本。

我想知道这是如何发生的,以及如何解决这个问题以获得值。此外,我还有另一个相同形式的选择列表,但它提交的是期望值。

谢谢

try with

$cName->getId() 

我假设$cNamePIE10Bundle:Classes实体的一个实例(尝试转储get_class($cName)),并且echo打印名称,因为它是作为__toString方法实现的。

希望对您有所帮助