实体字段类型symfony2

时间:2015-10-15 18:18:41

标签: forms symfony

我有一个下拉字段(城市),我将此字段添加到UserType

$builder->add('name', 'text', array('label' => 'form.name', 'translation_domain' => 'FOSUserBundle'));
$builder->add('phone', 'text', array('label' => 'form.phone', 'translation_domain' => 'FOSUserBundle'));
$builder->add('cityId', 'entity', array(
    'label' => 'form.city', 
    'translation_domain' => 'FOSUserBundle',
    'class' => 'AppBundle:City',
    // 'choice_label' => 'name',
    // 'choice_value' => 'id',
));

但是当我提交表单时,cityId字段会向我发送城市名称而不是ID。 我该如何解决?

1 个答案:

答案 0 :(得分:1)

我认为属性领域可以帮助你:) 在表单中,您应该添加property =>名字

$builder->add('cityId', 'entity', array(
    'label' => 'form.city', 
    'translation_domain' => 'FOSUserBundle',
    'class' => 'AppBundle:City',
    'property' => 'name',
));

或者在您的实体中编写像

这样的toString函数
$builder->add('cityId', 'entity', array(
    'label' => 'form.city', 
    'translation_domain' => 'FOSUserBundle',
    'class' => 'AppBundle:City',
    // toString() function called
));

City.php

public function __toString()
{
    return $this->name;
}