如何更改集合表单字段类型中选择的值和标签?
how change value and label of choice in collection form field type?
我有这样的集合字段类型:
$defaultData = array('attendances' => array('5', '4'));
$form = $this->createFormBuilder($defaultData)
->add('choice', 'text')
->add('email', 'email')
->add('message', 'textarea')
->add('attendances', 'collection', array(
'type' => 'choice',
'options' => array(
'choices' => array('1' => 'حاضر', '0' => 'غایب'),
),
))
->add('send', 'submit')
->getForm();
我得到的是这样的:
看看选择的标签是什么(0 和 1)以及它们的输入名称属性,我想要更改标签和输入名称属性,那么我该如何为此更改 $defaultData?
我建议,如果您要创建一个 select,您可以直接使用 'choice'
类型:
->add('attendances', 'choice', array(
'choices' => array('1' => 'حاضر', '0' => 'غایب'),))
希望对您有所帮助。
更新
您可以使用预定义的数组来填充选项。您还可以使用 data 属性设置默认值。
$defaultData = array('attendances' => array('5' => 'One option', '4' => 'Another option'));
...
->add('attendances', 'choice', array(
'choices' => $defaultData["attendances"],
'data' => '5',))// just in case you want a preselected choice, in this case, key 5 will appear selected by default.
...
好的,您可以使用 data
属性作为数组来执行此操作,您可以阅读更多相关信息 here
您的代码示例:
$defaultData = array('attendances' =>
array('key' => '5', 'key2' => '4')
);
$form = $this->createFormBuilder($defaultData)
->add('choice', 'text')
->add('email', 'email')
->add('message', 'textarea')
->add('attendances', 'collection', array(
'type' => 'choice',
'options' => array(
'choices' => array('1' => 'حاضر', '0' => 'غایب'),
),
'data' => $defaultData['attendances']
))
->add('send', 'submit')
->getForm();
结果:
name="form[attendances][key]"
name="form[attendances][key2]"
和标签也 key
和 key2
我有这样的集合字段类型:
$defaultData = array('attendances' => array('5', '4'));
$form = $this->createFormBuilder($defaultData)
->add('choice', 'text')
->add('email', 'email')
->add('message', 'textarea')
->add('attendances', 'collection', array(
'type' => 'choice',
'options' => array(
'choices' => array('1' => 'حاضر', '0' => 'غایب'),
),
))
->add('send', 'submit')
->getForm();
我得到的是这样的:
看看选择的标签是什么(0 和 1)以及它们的输入名称属性,我想要更改标签和输入名称属性,那么我该如何为此更改 $defaultData?
我建议,如果您要创建一个 select,您可以直接使用 'choice'
类型:
->add('attendances', 'choice', array(
'choices' => array('1' => 'حاضر', '0' => 'غایب'),))
希望对您有所帮助。
更新
您可以使用预定义的数组来填充选项。您还可以使用 data 属性设置默认值。
$defaultData = array('attendances' => array('5' => 'One option', '4' => 'Another option'));
...
->add('attendances', 'choice', array(
'choices' => $defaultData["attendances"],
'data' => '5',))// just in case you want a preselected choice, in this case, key 5 will appear selected by default.
...
好的,您可以使用 data
属性作为数组来执行此操作,您可以阅读更多相关信息 here
您的代码示例:
$defaultData = array('attendances' =>
array('key' => '5', 'key2' => '4')
);
$form = $this->createFormBuilder($defaultData)
->add('choice', 'text')
->add('email', 'email')
->add('message', 'textarea')
->add('attendances', 'collection', array(
'type' => 'choice',
'options' => array(
'choices' => array('1' => 'حاضر', '0' => 'غایب'),
),
'data' => $defaultData['attendances']
))
->add('send', 'submit')
->getForm();
结果:
name="form[attendances][key]"
name="form[attendances][key2]"
和标签也 key
和 key2