我正在尝试在表单中使用2个选项(admin
,csr
)进行简单的下拉菜单,以便用户能够在必要时更新role
。使用文本类型时没有问题,我可以更改和更新值(在DB中):
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('number', TextType::class, [
'disabled' => true
])
->add('code')
->add('name')
->add('access_level');
}
枝条
<div class="input-group">
<span class="input-group-addon hidden-sm">Access Level</span>
{{ form_widget(form.access_level) }}
</div>
但是当我将其更改为显示为下拉列表时,它会抛出错误,如下所示:
在渲染模板期间抛出了异常 (&#34;数组转换为字符串&#34;)。 在form_div_layout.html.twig(第82行)
我在这里缺少什么:
....
->add('name')
->add('access_level', ChoiceType::class, array(
'choices' => array(
'admin' => 'Admin',
'csr' => 'CSR'),
) );
twig :(无变化)
<div class="input-group">
<span class="input-group-addon hidden-sm">Access Level</span>
{{ form_widget(form.access_level) }}
</div>
这里也是实体中的列类型:
/**
* @var string
* @ORM\Column()
* @JMS\SerializedName("access_level")
* @JMS\Type("string")
*/
protected $access_level;
我改变了这样的表单构建器:
->add('access_level', ChoiceType::class, array(
'choices' => array('admin', 'csr'),
'choices_as_values' => true,
它现在正在工作,但它显示下拉列表中的键而不是选项!即使我添加了“choice_as_values&#39; =&GT;是的,它没有修复,但是当我编辑表单时,选择存储在数据库中!你知道我该怎么办呢? 这是我得到的截图:
答案 0 :(得分:0)
这真的很奇怪而且令人困惑。如果我在“管理员”以外的选项数组的键中添加任何内容,则可以正常使用!
->add('access_level', ChoiceType::class, array(
'choices' => array('whateveradfafafa' => 'admin', 'CSR' => 'csr'),
但是,如果我将密钥更改为“Admin”,则会抛出(“Array to string conversion”)错误!
->add('access_level', ChoiceType::class, array(
'choices' => array('Admin' => 'admin', 'CSR' => 'csr'),
所以我通过在末尾“admin”添加一个空格来修复它!
有没有人知道为什么会这样?