【发布时间】:2017-11-01 06:38:11
【问题描述】:
我正在尝试在一个表单中创建一个带有 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>
但是当我将其更改为显示为下拉菜单时,它会抛出如下错误:
在渲染模板期间引发了异常 (“数组到字符串的转换”)。 在 form_div_layout.html.twig 中(第 82 行)
我在这里缺少什么:
....
->add('name')
->add('access_level', ChoiceType::class, array(
'choices' => array(
'admin' => 'Admin',
'csr' => 'CSR'),
) );
树枝:(没有变化)
<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,
它现在正在工作,但它在下拉列表中显示键而不是选择!即使在我添加了'choices_as_values' => true 之后,它也无法修复,但是当我编辑表单时选择存储在数据库中!你知道我该如何解决吗? 这是我得到的截图:
【问题讨论】:
-
尝试使用这个:
{{ implode('',form_widget(form.access_level)) }} -
@Deepen,什么?只是没有......
-
@Kmaj 我使用的选择与您尝试的方式相同,请检查 form_div_layout.html.twig 中的 form_widget 块
-
@Deepen,它给出了一个语法错误。
-
@habibun,感谢您的回复,我应该在 form_div_layout.html.twig 的 form_widget 块中更改什么(错误来自该文件的第 82 行)。
标签: laravel symfony doctrine twig