我正在寻找一种方法,可以在symfony 2中为我的表单创建一个下拉列表,其中包含表Params中单个记录的字段'abbr1'和'abbr2'的值。
让我说我的桌子上有一条记录Params。
id:1
标题:样本
abbr1:qw12
abbr2:er34
现在我想选择abbr1和abbr2作为单个下拉列表的值。我创建了一个表单,但我不知道如何使它们成为一个选择。我一次只能选择一个属性。这是我的代码:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'desiredAbbr',
'entity',
array(
'class' => 'FooBarBundle:Params',
'property' => 'abbr1',
//'property' => 'abbr2',
)
)
->add('save','submit',array('label'=>'Submit'))
;
}
任何建议都非常感谢。非常感谢。
更新: 预期的下拉值在html格式中如下所示:
{% for par in parameters %}
<select>
<option>{{param.abbr1}}</option> {# qw12 #}
<option>{{param.abbr2}}</option> {# er34 #}
</select>
{% endfor %}
答案 0 :(得分:2)
$choices = $options['abbrChoices'];
$builder->add('desiredAbbr', ChoiceType::class, array(
'choices' => $choices,
));
// in configureOptions method
$resolver->setDefaults(array(
'abbrChoices' => array(),
));
在您创建表单的控制器中
$params = $this->getDoctrine()->getRepository('AppBundle:Params')->findAll();
$choices = array();
foreach ($params as $p) {
// key will be used as option value, value as option title
$choices[$p->getAbbr1()] = $p->getAbbr1();
$choices[$p->getAbbr2()] = $p->getAbbr2();
}
$form = $this->createForm(myform::class, array(), array('abbrChoices' => $choices));
BUT。你打算如何使用这个选择?