我有一个包含下拉列表和复选框的表单。该复选框控制下拉列表是否从表单的初始呈现中“禁用”(灰显)。我有JS,当你取消选中该框时,它启用该字段,现在允许用户更改该值。一切正常。
当您取消选中该框并更改下拉列表中的值时,Symfony仅保留复选框的值并忽略下拉列表中的新值。我假设这是因为symfony知道在最初呈现表单时禁用了该框,并忽略了通过更改该值而发布的任何新值。
我检查了探查器,它正在提交复选框(1)的新值以及帖子字段中下拉列表的新值。
探查器的“学说”选项卡仅显示正在更新的复选框值,但没有显示新的下拉列表值。
希望有人可以指出我正确的方向。希望一些简单的选项告诉symfony更新所有内容,无论它最初是否被渲染为禁用字段。
答案 0 :(得分:0)
您将需要使用readonly属性,并使用JS或jQuery更改字段的状态。我在Symfony 4中做到了
->add('someInput', TextType::class, array(
'attr' => array(
'readonly' => true,
),
));
然后使用JS根据某些值对其进行动态修改
if( someCondition ){
$(input).prop('readonly', false).attr('required',true);
} else{
$(input).prop('readonly', true).attr('required',false);
}