如何在PHP中自动选择传入日期

时间:2014-07-22 11:24:06

标签: php symfony symfony-forms

我是PHP的新手,如果这是一个简单的问题,请道歉。请问您能告诉我如何在PHP中自动选择日期下拉(使用3个下拉 - 日/月/年)。这就是我的PHP代码:

$s = '01/08/2014 11:00:02';
$date = strtotime($s);
$objectToParse->setDateReceived(date('d/M/Y H:i:s', $date));
$form = $this->createForm(new Type(), $objectToParse);

然后表单看起来像:

class Type extends AbstractType {
    public function buildForm(FormBuilderInterface $builder)
    {
        $builder->add('dateReceived', 'date', array(
            'required'  => false
        )) 
    }
}

我期待\DateTime。但此刻我刚收到一个

  

500内部服务器错误 - TransformationFailedException错误

1 个答案:

答案 0 :(得分:0)

在您的班级类型上,添加如下内容:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Acme\AcmeBundle\Entity\MyObject',
    ));
}

它在给定实体(MyObject)和表单之间进行绑定。

来自Forms (The Symfony Book) :

  

每个表单都需要知道包含该类的类的名称   基础数据(例如Acme \ TaskBundle \ Entity \ Task)。通常,这是   只是猜测基于传递给第二个参数的对象   createForm(即$ task)。后来,当你开始嵌入表格时,这个   将不再足够。因此,虽然并非总是必要,但它是   通常最好明确指定data_class选项

此外,您需要为setter setDateReceived提供DateTime。您使用date函数提供的是一个字符串。

您需要做的是:

$s = '01/08/2014 11:00:02';
$date = \DateTime::createFromFormat('d/M/Y H:i:s', $s);
$objectToParse->setDateReceived($date);