假设我的实体中有可空日期时间字段:
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中优雅地完成这项工作?
答案 0 :(得分:0)
Afaik theres没有symfony提供的解决方案
我会
$builder
// ...
->add('due', 'hidden')
并在视图中使用html和js
实现逻辑所以在点击截止日期时会显示两个复选框,然后显示日期时间输入
你只需要在提交之前将值(null || thedatetimeinputvalue)设置为隐藏字段