在 symfony2 表单中的日期时间字段上设置默认值

2022-08-30 10:22:35

我有一个包含多个字段的表单。其中之一是日期时间字段。如何定义该字段的默认值?

我尝试在相关实体,控制器,构造函数和__construct上设置值:

$myEntity = new MyEntity();
$myEntity->setMyDate(new \DateTime());
$form = $this->createForm(new AddMyEntity(), $myEntity);

不工作。

尝试在 buildForm 中定义变量:$data

$builder->add('myDate', 'date', array(
    'format' => \IntlDateFormatter::SHORT,
    'input' => 'datetime',
    'widget' => 'single_text',
    'data' => new \DateTime("now"));

也不工作。任何想法,Symfony2社区?

编辑:根据faost的需求添加实体。

/**
 * @ORM\Column(name="myDate", type="datetime")
 * @Assert\NotBlank()
 */
private $myDate;

答案 1

在实体构造函数中设置它:

class Entity
{
    /**
     * @var \DateTime
     */
    private $date;

    public function __construct()
    {
        $this->date = new \DateTime();
    }
}

答案 2

Elnur的答案是正确的,也许是推荐的答案。但为了完整起见,在表单中为日期小部件设置默认值的另一种方法是使用 DateTime 实例在 options 数组参数中指定键。data

$builder->add('myDate', 'date', array(
    'data' => new \DateTime()
));

注意:这将覆盖每次编辑时先前设置的日期时间。


推荐