Symfony3:为什么选择提交密钥文本而不是其值

时间:2016-09-19 04:42:29

标签: php symfony symfony-forms

Symfony 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。 我希望得到选择列表的值,而不是它的关键文本。

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

由于

1 个答案:

答案 0 :(得分:2)

尝试

$cName->getId() 

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

希望这个帮助