【问题标题】:Adding none value to entity in symfony form以 symfony 形式向实体添加无值
【发布时间】:2015-11-01 20:14:46
【问题描述】:

在 Symfony 表单中,我有一个名为 slot 的字段,它匹配一个带有自定义查询的实体。让我们这样说:

->add('slot', 'entity', array(
    'label'             => 'Slot',
    'class'             => 'FooBarBundle:Slot',
    'property'          => 'name',
    'required'          => false,
    'query_builder'     => function(\Foo\BarBundle\Entity\SlotRepository $er) use ($ids) {
        return $er->createQueryBuilder('u')
            ->where('u.id IN(:ids)')->setParameter('ids', $ids);
    }
))

到目前为止,一切正常。 slotManyToOne 匹配 Team 实体(表单是),因此一次只能选择一个插槽。正如我所说,一切都按计划进行。用户可以选择一个插槽并保存它,每个人都很高兴。

当您尝试“取消选择”一个插槽时,麻烦就开始了(是的,这必须是可能的)。所以我需要添加一个none 值,并带有None of the listed items 之类的标题或其他任何内容。问题是我该怎么做?

【问题讨论】:

  • 可能是'empty_data' => null, 'empty_value' => null ?
  • 正如@absalon.valdes 所说,'empty_value' => 'None of the listed items' 可以胜任。
  • 听起来和我想要的完全一样。我一回家就检查。您能否根据您的评论做出回答,以便我在测试后接受它?
  • @absalon.valdes 你能从你的评论中回答吗?这正是我想要的!

标签: php symfony doctrine-orm symfony-forms symfony-2.1


【解决方案1】:

选择字段(entity 字段扩展)在 Symfony 表单中呈现的方式由某种逻辑(documentation)定义。我猜你正在渲染一个<select> 下拉菜单,在这种情况下,如果你使用的是 Symfony 2.6 或更高版本,placeholder 就是你想要的(documentation)。但是请注意,对于某些数据库(例如 Postgres),placeholder 选项在 Symfony 2.7.0 和(我认为)2.7.1 中被破坏。

表单的empty_data / empty_value 问题是长期困惑的一部分。简而言之,使用placeholder

【讨论】:

    【解决方案2】:

    您应该使用empty_dataempty_value

    ->add('slot', 'entity', array(
        'label'             => 'Slot',
        'class'             => 'FooBarBundle:Slot',
        'property'          => 'name',
        'required'          => false,
        'query_builder'     => function(\Foo\BarBundle\Entity\SlotRepository $er) use ($ids) {
            return $er->createQueryBuilder('u')
                ->where('u.id IN(:ids)')->setParameter('ids', $ids);
        },
    
        'empty_data'  => null,
        'empty_value' => 'None of the listed items' /* or null */
    ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2013-02-03
      • 2019-08-31
      • 1970-01-01
      • 2021-02-05
      • 2015-02-11
      • 1970-01-01
      相关资源
      最近更新 更多