错误:使用\ DateTime调用非对象上的成员函数format()

时间:2015-02-10 09:05:08

标签: php symfony datetime doctrine-orm formbuilder

我的Symfony项目有一个问题。我有一个具有许多\ DateTime的实体,如下所示:

/**
* @var \DateTime
*
* @ORM\Column(name="date_debut", type="datetime", length=255)
*/
protected $dteDebut ;

function getDteDebut() {return $this->dteDebut;}

function setDteDebut(\DateTime $dteDebut) {$this->dteDebut = $dteDebut;}

我使用带有日期时间的formBuilder:

$builder->add('dteDebut', 'datetime', array(
            'label' => 'Date de début :',
            'date_widget' => 'single_text',
            'time_widget' =>'single_text'
        ));

使用我的表单的一个简单的功能:

public function organiserAction(){

    $em=$this->getDoctrine()->getManager();
    $orga = new \CCF\CCFBundle\Entity\Organiser;
    $form = $this->createForm(new \CCF\CCFBundle\Form\OrganiserForm(), $orga);
    $request = $this->get('request');

    if ($request->getMethod() == 'POST') {
        $form->bind($request);
        var_dump($form->get('dteDebut')->getData());
        if ($form->isValid()) {                
            $em->persist($orga);
            $em->flush();
            return $this->redirect($this->generateUrl('organiser_homepage'));
        }
    }
    //on passe la méthode createView() à la vue pour qu'elle l'affiche
    return $this->render('CCFBundle:Organiser:create.html.twig',array("form"=>$form->createView(),));
}

当我对表单有效时,我有一个错误

  

错误:在非对象上调用成员函数format()

堆栈跟踪

在vendor / doctrine / dbal / lib / Doctrine / DBAL / Types / DateType.php第53行 -

public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
    return ($value !== null)
        ? $value->format($platform->getDateFormatString()) : null;
}
/**

我不明白这个错误在哪里,你能帮助我吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

/**
* @var \DateTime
*
* @ORM\Column(name="date_debut", type="datetime", length=255)
*/
protected $dteDebut ;

function getDteDebut() {return $this->dteDebut;}

function setDteDebut(new \DateTime $dteDebut) {$this->dteDebut = $dteDebut;}

答案 1 :(得分:0)

我也在我的一个实体中使用datetime。我看到的一个变化是我没有在setter中指定变量是一个日期时间对象

setDteDebut($dteDebut) {...}

答案 2 :(得分:0)

好吧,我的错...我在另一个属性上犯了一个错误...我有一个类型为date的属性,这个属性在表单中有一个类型字符串...