user1716552
user1716552

Reputation: 81

Error: Call to a member function format() on a non-object with \DateTime

I have one problem with my Symfony project. I have one entity with many \DateTime like this :

/**
* @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;}

I use formBuilder with datetime like this:

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

And one simple fonction to use my form:

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(),));
}

When I valid the form I have one error

Error: Call to a member function format() on a non-object

Stack Trace

in vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php at line 53 -

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

I do not understand where does this error, can you help me?

Upvotes: 0

Views: 4638

Answers (3)

user1716552
user1716552

Reputation: 81

Ok my bad... I was made a error on one other attribute... I have one attribute with type date and this attribute have a type string in the form...

Upvotes: 0

Bango
Bango

Reputation: 1001

I use datetime in one of my entities, too. One change I see is that I don't specify in the setter that the variable is a datetime object

setDteDebut($dteDebut) {...}

Upvotes: 0

hizbul25
hizbul25

Reputation: 3849

Try with this:

/**
* @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;}

Upvotes: 0

Related Questions