Symfony:FormType、Entity、queryBuilder - 如何更改生成选项的值?
Symfony: FormType, Entity, queryBuilder - how change the value of generated options?
我想将字段 country
(string) 添加到我的 Form\Type
。
country
与 Entity\Country
无关,应该存储国家代码 (en, it, fr, ...) 而不是实体的 ID。
我将 Entity\Country
的国家代码加载到我的表单中,但生成的 select 具有实体 ID 作为值,__toString()
-return 作为文本.
如何将 c.code
设置为 <option>
的值?
表格类型:
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:
<select>
<option value="1">en</option>
<option value="2">it</option>
<option value="3">fr</option>
</select>
想要select:
<select>
<option value="en">en</option>
<option value="it">it</option>
<option value="fr">fr</option>
</select>
提前致谢!
如果您使用的是 symfony 2.7,请使用 entity
表单字段类型的 choice_label
选项。如果使用旧版本的 symfony,请使用 property
选项。更多信息在这里:http://symfony.com/doc/current/reference/forms/types/entity.html
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"
));
}
我想将字段 country
(string) 添加到我的 Form\Type
。
country
与 Entity\Country
无关,应该存储国家代码 (en, it, fr, ...) 而不是实体的 ID。
我将 Entity\Country
的国家代码加载到我的表单中,但生成的 select 具有实体 ID 作为值,__toString()
-return 作为文本.
如何将 c.code
设置为 <option>
的值?
表格类型:
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:
<select>
<option value="1">en</option>
<option value="2">it</option>
<option value="3">fr</option>
</select>
想要select:
<select>
<option value="en">en</option>
<option value="it">it</option>
<option value="fr">fr</option>
</select>
提前致谢!
如果您使用的是 symfony 2.7,请使用 entity
表单字段类型的 choice_label
选项。如果使用旧版本的 symfony,请使用 property
选项。更多信息在这里:http://symfony.com/doc/current/reference/forms/types/entity.html
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"
));
}