Symfony - JS使禁用的字段不会持久

时间:2016-04-16 14:59:04

标签: forms symfony

我有一个包含下拉列表和复选框的表单。该复选框控制下拉列表是否从表单的初始呈现中“禁用”(灰显)。我有JS,当你取消选中该框时,它启用该字段,现在允许用户更改该值。一切正常。

当您取消选中该框并更改下拉列表中的值时,Symfony仅保留复选框的值并忽略下拉列表中的新值。我假设这是因为symfony知道在最初呈现表单时禁用了该框,并忽略了通过更改该值而发布的任何新值。

我检查了探查器,它正在提交复选框(1)的新值以及帖子字段中下拉列表的新值。

探查器的“学说”选项卡仅显示正在更新的复选框值,但没有显示新的下拉列表值。

希望有人可以指出我正确的方向。希望一些简单的选项告诉symfony更新所有内容,无论它最初是否被渲染为禁用字段。

1 个答案:

答案 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);
    }