Forum
/
Topics

ma carte patient ne s'affiche pas dans la zone souhaitée

Publié le 10 mai 2024 par bmariasirine

Coucou tout le monde, j'essaie de créer une carte patient qui s'ajoute automatiquement à l'ajout dans la zone "attente assise" j'ai fait ça dans le controller

1 public function storePatient(Request $request)
2{
3 $validatedData = $request->validate([
4 'nom' => 'required|string|max:255',
5 'nomJeuneFille' => 'nullable|string|max:255',
6 'lieuNaissance' => 'required|string|max:255',
7 'telephone' => 'required|string|max:255',
8 'email' => 'nullable|email|max:255',
9 'prenom' => 'required|string|max:255',
10 'dateNaissance' => 'required|date',
11 'adresse' => 'required|string|max:255',
12 'numeroAssurance' => 'required|string|max:255',
13 'sexe' => 'required',
14 ]);
15 
16 $patient = Patient::create($validatedData);
17 
18 $dateNaissance = new DateTime($patient->dateNaissance);
19 $aujourdhui = new DateTime();
20 $diff = $dateNaissance->diff($aujourdhui);
21 $age = $diff->y;
22 
23 $icone = ($patient->sexe === 'homme') ? 'male.png' : 'femelle.png';
24 
25 $cartePatient = "<div class='carte-patient'>
26 <p>Nom: {$patient->nom} {$patient->prenom}</p>
27 <p>Âge: {$age}</p>
28 <img src='images/{$icone}' alt='Genre'>
29 </div>";
30 
31 $cartesPatients = session()->has('cartesPatients') ? session('cartesPatients') : [];
32 $cartesPatients[] = $cartePatient;
33 
34 
35 return back()->with(['success' => 'Patient ajouté avec succès.', 'cartesPatients' => $cartesPatients]);
36}

et ça dans la vue :

1<div class="zone_attente">
2 <p class="titre">Zone d'attente</p>
3 <div class="attente_assise" id="attenteAssise">
4 <p class="titre_secondaire">Attente assise</p>
5 @if(session()->has('cartePatient'))
6 <div class="attenteAssise">
7 {!! session('cartePatient') !!}
8 </div>
9 @endif
10 </div>
11 <div class="attente_couchee">
12 <p class="titre_secondaire">Attente couchée</p>
13 <div class="attenteCouchee"></div>
14 </div>
15</div>

au debut ca m'affichait la carte et en une fraction de seconde ça partait comment faire pour afficher la carte de façon permanente ? quand jai demande a ChatGPT il m'a dit que c'est un problème de redirection mais je vois pas ou est ce problème la voila mes routes

1<?php
2 
3use App\Http\Controllers\AdminController;
4use App\Http\Controllers\ChangerMotDePasseController;
5use App\Http\Controllers\LoginController;
6use App\Http\Controllers\SallesController;
7use Illuminate\Support\Facades\Route;
8 
9Route::get('/', [LoginController::class,'login'])->name('Login.login');
10Route::post('/', [LoginController::class,'loginPost']);
11Route::get('/logout', [LoginController::class,'logout'])->name('logout');
12 
13Route::middleware(['auth'])->group(function () {
14 Route::get('/administrateur', [AdminController::class,'index'])->name('Admin.index');
15 Route::post('/administrateur', [AdminController::class,'store']);
16 Route::post('/unites-fonctionnelles', [AdminController::class, 'storeUniteFonctionnelle'])->name('unites-fonctionnellesStore');;
17 Route::get('/changer_mot_de_passe', [ChangerMotDePasseController::class,'index'])->name('ChangerMdp.index');
18 Route::post('/changer-mot-de-passe', [ChangerMotDePasseController::class, 'update'])->name('postChangerMotDePasse');
19 Route::get('/salles', [SallesController::class,'index'])->name('Salles.index');
20 Route::get('/medecins', [AdminController::class,'getMedecins'])->name('Admin.getMedecins');
21 Route::get('/infirmiers', [AdminController::class,'getInfirmiers'])->name('Admin.getInfirmiers');
22 Route::get('/admin', [AdminController::class,'getAdmins'])->name('Admin.getAdmins');
23 Route::get('/logoutP', [SallesController::class,'logoutP'])->name('logoutP');
24 Route::get('/logout', [SallesController::class,'logout'])->name('logout');
25 Route::get('/options', [SallesController::class, 'getOptions']);
26 Route::post('/ajouter-patient', [SallesController::class, 'storePatient'])->name('AjouterPatient');
27});
1 réponse
William Suppo, Il y a 1 mois

Bonjour bmariasirine,

Si je comprends bien, ta méthode storePatient permet d'enregistrement un nouveau patient en base, right ?

La 1ere partie de ta méthode me semble cohérente, par contre la suite est un peu inattendu.

Déjà, essaie de garder les responsabilités de chacun dans le modèle MVC, c'est à dire que ton contrôleur valide les inputs et demande au modèle d'enregistrer l'info en base c'est ok.

Par contre ne lui demande pas de te préparer des éléments html, je te conseille de transmettre les éléments nécessaires à la vue mais d'aucunement les préparer, pour ça tu peux faire :

1View::make('afficher-patients')->with(['patients' => $patients]);

Ensuite, c'est mieux si chaque méthode de ton contrôleur se charge d'une seule chose, en l’occurrence ici storePatient doit se charger d'enregistrer le nouveau patient et c'est tout.

C'est à dire, qu'au vu de ce que tu sembles vouloir faire, tu dois terminer ton contrôleur par :

1$patient = Patient::create($validatedData);
2
3return back()->with(['success' => 'Patient ajouté avec succès.');

Ensuite, c'est une autre méthode de ton contrôleur, probablement index si tu respectes les conventions de Laravel, qui va se charger de récupérer tous les patients, dont le nouveau, que tu injecteras dans ta vue via :

1$patients = Patient::all();
2View::make('patients.index')->with(['patients' => $patients]);

Et enfin dans ta vue, tu peux faire qque chose comme :

1<div class="zone_attente">
2 <p class="titre">Zone d'attente</p>
3 <div class="attente_assise" id="attenteAssise">
4 <p class="titre_secondaire">Attente assise</p>
5 @foreach($patients as $patient)
6 <div>Mon patient {{ $patient->name }}
7 @endforeach
8 </div>
9 <div class="attente_couchee">
10 <p class="titre_secondaire">Attente couchée</p>
11 <div class="attenteCouchee"></div>
12 </div>
13</div>

Ensuite, tu pourrais effectivement créer un composant blade pour gérer la card de ton patient si tu l'utilises autre part.

Enfin, voici le premier article qui permet de découvrir les bases de Laravel