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

时间:2015-03-11 12:39:30

标签: php symfony symfony-forms

假设我的实体中有可空日期时间字段:

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 :(得分:0)

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

我会

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

并在视图中使用html和js

实现逻辑

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

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