up archived proposals
This commit is contained in:
parent
1ed9ac8690
commit
7d76d6efa5
2 changed files with 53 additions and 1 deletions
52
wiki_compare/CHANGES_TOP_VOTERS.md
Normal file
52
wiki_compare/CHANGES_TOP_VOTERS.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
# 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 :
|
||||
|
||||
```php
|
||||
// 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 :
|
||||
|
||||
```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
|
||||
|
||||
1. **Robustesse** : Le template est maintenant plus robuste et peut gérer les cas où la clé `top_voters` n'existe pas dans le tableau `statistics`.
|
||||
2. **Prévention des erreurs** : L'erreur liée à l'accès à une clé inexistante est évitée.
|
||||
3. **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.
|
||||
4. **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.
|
Loading…
Add table
Add a link
Reference in a new issue