我在 Symfony4 的控制器中有一个奇怪的错误
I have a weird bug in controller with Symfony4
这是我的控制器
$entretien = new Entretien();
$form3 = $this->createForm(EntretienType::class, $entretien); // entretien type has a attribute debutRdv
$form3->add('duree', TimeType::class, [
'placeholder' => [
'hour' => 'Heure', 'minute' => 'Minute', 'second' => 'Seconde',
],
'with_seconds' => true,
"mapped" => false,
]);
$form3->handleRequest($request);
if($form3->isSubmitted())
{
$debutRdv= $entretien->getDebutRdv(); // getdata from form
$duree =$form3->get("duree")->getData();
$duree = $duree->format('\P\TH\Hi\Ms\S');
/*------------Here the probleme--------*/
$finRdv = $debutRdv->add(new \DateInterval($duree));
/*-------------------------------------*/
...
问题是当我编写 $debutRdv->add(...) 属性 $debutRdv 更改为 $finRdv 就像我完成 $debutRdv = $finRdv;
例如
$debutRdv: "2019-03-25 16:30:00"
$duree : "0:30:00"
写这篇文章的时候
$finRdv = $debutRdv->add(new \DateInterval($duree));
$duree和$debutRdv改为2019-03-2517:00:00
但我只想 $duree 得到 2019-03-25 17:00:00
我想解决这个问题是因为
$entretien->getDebutRdv() 也更改为 2019-03-25 17:00:00 就像我所做的 $entretien->setDebutRdv($duree)
这是 \DateTime
实例的默认行为:add
方法更改调用它的对象。如果您不想 $debutRdv
被更改,您可以 克隆 到 $finRdv
并应用 add
:
$finRdv = clone $debutRdv;
// see, here's no `=` as `add()` will directly change `$finRdv`
$finRdv->add(new \DateInterval($duree));
这是我的控制器
$entretien = new Entretien();
$form3 = $this->createForm(EntretienType::class, $entretien); // entretien type has a attribute debutRdv
$form3->add('duree', TimeType::class, [
'placeholder' => [
'hour' => 'Heure', 'minute' => 'Minute', 'second' => 'Seconde',
],
'with_seconds' => true,
"mapped" => false,
]);
$form3->handleRequest($request);
if($form3->isSubmitted())
{
$debutRdv= $entretien->getDebutRdv(); // getdata from form
$duree =$form3->get("duree")->getData();
$duree = $duree->format('\P\TH\Hi\Ms\S');
/*------------Here the probleme--------*/
$finRdv = $debutRdv->add(new \DateInterval($duree));
/*-------------------------------------*/
...
问题是当我编写 $debutRdv->add(...) 属性 $debutRdv 更改为 $finRdv 就像我完成 $debutRdv = $finRdv;
例如 $debutRdv: "2019-03-25 16:30:00" $duree : "0:30:00"
写这篇文章的时候
$finRdv = $debutRdv->add(new \DateInterval($duree));
$duree和$debutRdv改为2019-03-2517:00:00 但我只想 $duree 得到 2019-03-25 17:00:00
我想解决这个问题是因为 $entretien->getDebutRdv() 也更改为 2019-03-25 17:00:00 就像我所做的 $entretien->setDebutRdv($duree)
这是 \DateTime
实例的默认行为:add
方法更改调用它的对象。如果您不想 $debutRdv
被更改,您可以 克隆 到 $finRdv
并应用 add
:
$finRdv = clone $debutRdv;
// see, here's no `=` as `add()` will directly change `$finRdv`
$finRdv->add(new \DateInterval($duree));