3.1 KiB
Correction de l'erreur avec statistics.top_voters
dans wiki_archived_proposals.html.twig
Description du problème
Le template admin/wiki_archived_proposals.html.twig
présentait une erreur lors de l'accès à la clé top_voters
qui n'existait pas dans le tableau statistics
. L'erreur était la suivante :
Key "top_voters" for sequence/mapping with keys "0, 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, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99" does not exist in admin/wiki_archived_proposals.html.twig at line 312.
Cette erreur se produisait lorsque le template tentait d'itérer sur statistics.top_voters
à la ligne 312, mais cette clé n'existait pas dans le tableau statistics
passé par le contrôleur.
Vérification du contrôleur
Après avoir examiné la méthode archivedProposals
dans WikiController.php
, j'ai constaté que le contrôleur charge les données depuis un fichier JSON et passe la variable statistics
au template :
// Extract statistics object
$statistics = $this->extractJsonArrayByKey($jsonFile, 'statistics', $maxItems);
// ...
return $this->render('admin/wiki_archived_proposals.html.twig', [
'proposals' => $proposals,
'statistics' => $statistics,
'last_updated' => $lastUpdated,
'limit' => $limit
]);
Cependant, le contrôleur ne vérifie pas explicitement si la clé top_voters
existe dans le tableau statistics
.
Modification apportée
J'ai ajouté une valeur par défaut pour statistics.top_voters
dans le template en utilisant le filtre default
de Twig :
{% for voter in statistics.top_voters|default([]) %}
Cette modification permet d'utiliser un tableau vide comme valeur par défaut si statistics.top_voters
n'existe pas, ce qui évite l'erreur et fait que la boucle ne s'exécute pas dans ce cas.
Avantages de cette modification
- Robustesse : Le template est maintenant plus robuste et peut gérer les cas où la clé
top_voters
n'existe pas dans le tableaustatistics
. - Prévention des erreurs : L'erreur liée à l'accès à une clé inexistante est évitée.
- Expérience utilisateur améliorée : Les utilisateurs ne verront plus d'erreurs, mais simplement une section vide lorsque les données des votants ne sont pas disponibles.
- Maintenance simplifiée : Cette approche est plus maintenable que de modifier le contrôleur, car elle gère le problème au niveau du template sans nécessiter de changements dans la logique du contrôleur.
Remarque
Cette modification suit la même approche que celle utilisée pour corriger les problèmes similaires avec d'autres clés dans le même template, comme total_votes
, avg_votes_per_proposal
, etc. C'est une pratique courante dans les templates Twig d'utiliser le filtre default
pour gérer les cas où des variables ou des clés peuvent ne pas exister.