FormType ChoiceType(选择)数据预设在视图Symfony 3.4中不起作用

时间:2019-01-09 08:50:30

标签: forms symfony twig symfony-3.4 symfony3.x

在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 );

删除该行时,预设值起作用(虽然不是变压器。显然...)。因此,问题很棘手:为什么数据转换器会干扰预设值设置?

1 个答案:

答案 0 :(得分:0)

问题不在字段或预设值中,而在我在编辑中提到的数据转换器中。修复数据转换器也解决了没有预设值的问题。