Correction SPS222 23 TW2.0
Correction SPS222 23 TW2.0
Correction SPS222 23 TW2.0
Semestre : 1 2
Session : Principale Rattrapage
1.
a. ……… Architechture MVC. Model : Dossier src/Model ; View : Dossier Template ;
Controlelr : Dossier src/Controller
b. …ORM Doctrine, Permet d’utiliser differente commandes assurant la création des
entités, le mapping etc. et permet d’utiliser les méthodes du repository (recuperation et
recherche de données) et les methodes de l’entity manager ( création et manipulation
de données)
2.
a. Symfony console doctrine :database :create
Symfony console make : entity Association -> assocationName ->objective : float
Symfony console make :entity Donator ; -> name >donNature->donAmount float
donDate -> Date………………………………
b.
[1] : #[ORM\ManyToOne(inversedBy: 'donators')].
[2] #[ORM\OneToMany(mappedBy: 'association', targetEntity: Donator::class)]
c. …non,Nous pouvons avoir des classes qui représentent des objets qui peuvent servir
pour une logique metier sans pour autant les avoir comme tables dans notre base de
données………………………………………………………………………………
3.
1
$em->flush();
}
return $this->renderForm('donator/add.html.twig', [
'f' => $form,
]);
4.
return $this->render('association/list.html.twig', [
'res' => $result ]); }
b. Fichier association/list.html.twig :
…<table border="2">
<tr>
<td>id
</td>
<td>Association Name
</td>
<td>objective
</td>
<td>Action
</td>
</tr>
</tr>
2
{% endfor %}
</table>…
5. a List.html.twig:
<td>
<a href="{{path('adddonator',{'id':association.id})}}"> donation</a> </td>
…………………………………………………………………………………………
b addDonator:
public function adddonator(Request $request,ManagerRegistry
$mr,$id,AssociationRepository $repo): Response
{
$association=$repo->find($id); [1]
$donator=new Donator(); [2]
$form=$this->createForm(DonatorType::class,$donator);
$form->handleRequest($request);
if($form->isSubmitted()){
[3]
$em=$mr->getManager();
$DonAmount=$donator->getDonAmount(); [4]
$restsold=$association->getObjective()-$DonAmount; [5]
$TMPassociation=$association->setObjective($restsold); [6]
$donator->setAssociations($TMPassociation); [7]
$em->persist($donator);
$em->flush();
}
return $this->renderForm('donator/adddonatreur.html.twig', [
'f'=>$form
]);
6.
if($association!=null){ [a]
if($donator->getDonAmount()>0){ [b]
$em=$mr->getManager();
$DonAmount=$donator->getDonAmount();
$restsold=$association->getObjective()-$DonAmount;
$TMPassociation=$association->setObjective($restsold);
$donator->setAssociations($TMPassociation);
$em->persist($donator);
$em->flush();
}else{
return new Response('This amount is below 0'); [b]
}
}else{
return new Response("No association found for the ID: ".$id); [a] }
3
}
..
7. Code de la méthode à ajouter dans associationRepository.php.
public function objectivenonatt()
{
return $this->createQueryBuilder('a')
->where('a.Objective>=0')
//->setParameter('1',0)
->getQuery()
->getResult();…