我想将字段country
(字符串)添加到我的Form\Type
。
country
与Entity\Country
无关,应存储国家/地区代码(en,it,fr,...),而不是实体的ID。
我将Entity\Country
的国家/地区代码加载到我的表单中,但生成的select将实体的ID作为值,__toString()
- 返回为文本。
如何将c.code
设置为<option>
的值?
FormType:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('country', 'entity', array(
'class' => 'appBundle:Country',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('c')->orderBy('c.code', 'ASC');
}
));
}
生成选择:
<select>
<option value="1">en</option>
<option value="2">it</option>
<option value="3">fr</option>
</select>
所需选择:
<select>
<option value="en">en</option>
<option value="it">it</option>
<option value="fr">fr</option>
</select>
提前致谢!
答案 0 :(得分:1)
如果您使用的是symfony 2.7,请使用choice_label
表单字段类型的entity
选项。如果使用旧版本的symfony,请使用property
选项。更多信息请访问:http://symfony.com/doc/current/reference/forms/types/entity.html
答案 1 :(得分:0)
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('country', 'entity', array(
'class' => 'appBundle:Country',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('c')->orderBy('c.code', 'ASC');
},
'choice_value'=>"country-code", //(country-code = column name in database)
'choice_label'=>"country-name"
));
}