当前位置: 首页 > 知识库问答 >
问题:

默认情况下选中Symfony复选框,但如果在持久化后未选中则不会选中

鲜于念
2023-03-14

剧透提醒:这个问题多年来被问过无数次,但到目前为止,我还没有看到有效的解决方案。例如这里

我正在开发一个基于Symfony2.8版本的应用程序

    null
class MyEntity
{
  /**
   * @ORM\Column(name="enabled", type="boolean")
   */
  private $enabled = true;

  public function __construct()
  {
    $this->enabled = true;
  }
}
  public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $builder
      ->add('enabled', CheckboxType::class, [
        'required' => false,
        'empty_data' => true,
      ]);
  }

这个'empty_data'=>true(或'empty_data'=>1或其他)“部分”工作:它在持久化后显示正确的复选框状态,但默认情况下不选中复选框=>FAIL

  public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $builder
      ->add('enabled', CheckboxType::class, [
        'required' => false,
        'data' => true,
      ])
  }

默认情况下,它确实选中了复选框,但是如果用户取消选中复选框并保持不变,重新加载的表单仍然显示选中的复选框,即使保持的状态是unchecked=>FAIL,这是预期的,如文档中所述

由于该实体不是主窗体实体:子窗体(在集合中),我还试图在CheckboxType中将复合属性设置为true,但没有效果。

$(element).prop('checked', true)

对于这个问题,您有解决方案吗?SF>=2.8(2.8是我的版本)?解决方案是对称方。

共有1个答案

羊和光
2023-03-14
 $builder->add('enabled', CheckboxType::class, array(
        'attr' => array('checked' => 'checked'),
    ));

别忘了在坚持之前设置为true:

$obj->setCheckboxValue(true);
 类似资料:
  • 如果选中复选框D并取消选中其他复选框,我希望选中复选框K和F。同样,如果选中复选框I,则前面的复选框I将被选中,下面的复选框将被取消选中。我的html代码是: 我为此所做的是: 这看起来很乱,还有一个很酷的过程吗???

  • 我需要一些帮助,我不知道如何解决这个问题。 当我设置适配器时,我需要默认选择几个复选框,但我不能这样做。为什么?我认为问题是CheckableRelativeLayout。我使用RelativeLayout的这个变体,因为我需要单击行并选择复选框。 当我使用RelativeLayout的这个变体时,列表中的所有复选框都未选中。如果您在最后看到我的日志,当选中复选框时会触发事件“onCheckedC

  • 问题内容: 我有一些单选按钮,我希望其中的一个按钮在页面加载时默认设置为选中状态。我怎样才能做到这一点? 问题答案: XHTML解决方案: 请注意,属性的实际值并不重要。这只是分配的约定。最重要的是,字符串喜欢或没有任何特殊含义。 如果您不希望符合XHTML,则可以将代码简化为:

  • 如问题所述,当选中标题中的“全选”复选框时,我已经可以选中gridview行中的复选框,当取消选中标题中的“全选”复选框时,取消选中gridview行中的复选框。我想做的是,当没有选中行中的所有复选框时,则不选中标题中的“全选”复选框,反之亦然(当选中行中的所有复选框时,则选中标题中的“全选”复选框)。 我该怎么做? 我已经做了我想要实现的,但是标题中的复选框开始影响(选中或取消选中),即使我只选

  • 我有几个复选框。基于JSON响应(通过ajax-requests加载数据),我使用.prop()函数设置和重置复选框的默认值。问题是,如果我手动改变它们,它们显然不会改变这种行为。我不能通过$('#checkbox:checked').val()传递复选框的值,控制台日志显示为'undefined'。这是因为.prop()函数吗?如何获取选中复选框的值? 如果你需要更多的信息,我很乐意提供。这里有

  • 选中“第一键”复选框时,我想选中并禁用“第二键”复选框 html代码 为复选框键入脚本代码 } 通过使用此代码,key 2复选框被选中并禁用。但是key 2复选框的布尔值仍然是假的。当我单击key 1复选框时,关于如何将key 2复选框的布尔值更改为true的任何建议我正在使用Angular 8及其反应式形式模块。我是角度新手。