首页 文章

如何让Symfony为实体中的可空字段呈现复选框?

提问于
浏览
2

假设我的实体中有一个可以为空的datetime字段:

class Foo
{
    /**
     * @ORM\Column(name="due", type="datetime", nullable=true)
     */
    private $due;

    public function getDue()
    {
        return $this->due;
    }

    public function setDue($due)
    {
        $this->due = $due;
        return $this;
    }
}

现在在 FooType.php 中我为此定义了一个表单字段:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        // ...
        ->add('due', 'datetime')
        // ...
    ;
}

但是,即使该字段可以为空,呈现的表单字段也只允许用户输入日期/时间,但不能说它应该是 null .

我想要一个像这样的单选按钮UI:

( ) No due date
( ) Due date:   [ control ]

或者是一个复选框:

[ ] Due date:   [ control ]

理想情况下,如果选择“无截止日期”/未选中该复选框,则应禁用该控件 .

是否可以在Symfony中优雅地完成这项工作?

1 回答

  • 0

    Afaik theres没有symfony提供的解决方案

    我会

    $builder
        // ...
        ->add('due', 'hidden')
    

    并在视图中使用html和js实现逻辑

    所以两个复选框点击截止日期然后显示日期时间输入

    你只需要在提交之前将值(null || thedatetimeinputvalue)设置为隐藏字段

相关问题