Hello,
Merci pour ta réponse, j'ai essayé mais j'ai cette erreur :
Catchable Fatal Error: Object of class DateTime could not be converted to string
Pour cette ligne :
1 2
| $sdate = strtotime("$start +1 day");
$edate = strtotime($end); |
Je sais que c'est une histoire de conversion mais j'arrive pas trop à comprendre comment convertir le DateTime à String.
J'ai essayé de changer la variable en mettant en dur les dates ci-dessous pour le tester jusqu'au bout:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public function getDatesBetween($start, $end) {
if ($start > $end) {
return false;
}
$sdate = strtotime("2016-12-21");
$edate = strtotime("2017-01-01");
$dates = array();
for ($i = $sdate; $i < $edate; $i += strtotime('+1 day', 0)) {
$dates[] = date('Y-m-d', $i);
}
return $dates;
} |
Ensuite j'ai l'action pour ajouter (j'ai dû faire quelques modifs sur la boucle foreach) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| /**
* Creates a new task entity.
*
*/
public function newAction(Request $request) {
$task = new Task();
$form = $this->createForm('TasksBundle\Form\TaskType', $task);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$startDate = $form->get('startDate')->getData();
$endDate = $form->get('endDate')->getData();
$name = $form->get('name')->getData();
$arrayOfRangeDate = $this->getDatesBetween($startDate, $endDate);
$em = $this->getDoctrine()->getManager();
foreach ($arrayOfRangeDate as $key) {
$task = new task();
$date = new \DateTime($key);
$task->setDate($date);
$task->setName($name);
$em->persist($task);
}
$em->flush();
return $this->redirectToRoute('task_show', array('id' => $task->getId()));
}
return $this->render('task/new.html.twig', array(
'task' => $task,
'form' => $form->createView(),
));
} |
Cela fonctionne bien mais je ne comprend pas la partie rouge, pourquoi est-ce que je dois lui renseigner a nouveau les attributs?
Merci pour votre aide
Partager