在Symfony 3.4应用程序中,我已经定义了一个MyFormType类,并带有类似ChoiceType的元素
$builder->add(
'my_field_1',
ChoiceType::class,
array(
'label' => 'My Label',
'placeholder' => 'nothing selected',
'choices' => $choicesArray,
'multiple' => false,
'expanded' => false,
'required' => false,
'mapped' => true,
'data' => $choicesPreset,
)
);
在Controller中,我创建将所需对象传递给预设数据的表单,然后将创建的视图传递给Twig模板。 在模板中,表单呈现为OK。除未设置ChoiceType选择元素的预设值外,其他所有操作均有效。使用选定的占位符选项呈现该字段。
所有其他形式相同的元素都可以毫无问题地加载其预设值。但是它们都不是ChoiceType。
在调试时,我发现在创建表单类时预设值是正确的,并且该预设值也已设置为字段(我不确定在FormBuilder元素中究竟必须设置哪些属性)。 在调试ChoiceType预设值时,在Controller中也看起来不错。 但是,模板会呈现占位符。
我不确定如何调试树枝模板,如果我知道我不知道要寻找什么,我也不确定。 非常欢迎这里出现任何问题的提示。
编辑:
在检查选项和预设值时,我发现问题实际上并非来自表单字段本身或其任何选项,而是来自数据转换器。 我在上面的代码postet的正下方有此行:
$builder->get('my_entity')->addModelTransformer( $this->myEntityToNumberTransformer );
删除该行时,预设值起作用(虽然不是变压器。显然...)。因此,问题很棘手:为什么数据转换器会干扰预设值设置?
答案 0 :(得分:0)
问题不在字段或预设值中,而在我在编辑中提到的数据转换器中。修复数据转换器也解决了没有预设值的问题。