Symfony2将选定日期从表单保存为数据库,作为DateTime

时间:2015-09-17 07:42:18

标签: php mysql symfony datetime

在我的表单中,用户选择何时只想这样购买:

        ->add('start_date', 'date', array(
            'input'  => 'datetime',
            'widget' => 'choice',
        ))

现在我想在此字段中将此日期保存到数据库中:

/**
 * @var \DateTime
 *
 * @ORM\Column(name="campaign_list_end_date", type="date", nullable=true)
 */
private $endDate;

因此,当提交表单时,我会得到日期。但它是一串字符串:

$data = $request->request->get('courier');
echo var_dump($data['start_date']); die;

array (size=3)
  'month' => string '2' (length=1)
  'day' => string '1' (length=1)
  'year' => string '2012' (length=4)

如何将此值转换为DateTime对象?

我试过这样的事情,它没有用:

$date = new DateTime('now');
$start_date = $date->setTimestamp($data['start_date']);

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用symfony表单时,您应该从表单本身检索发布的数据。表单会将数据转换为正确的类型:

$date = $form->get('start_date')->getData();

此外,如果您的表单绑定到实体,您还可以获取带有提取到其中的已发布值的绑定实体:

$entity = $form->getData();