Jump to content

Edit History

Sda33

Sda33

@Eolia Eurêka ! Je viens de trouver où était le problème de l'affichage des champs de personnalisation en Back Office, fiche produit.

Pour rappel, le bug était : quel que soit le nombre de champs de personnalisation pour ce produit en base de données, l'interface n'affichait jamais le dernier de la liste.

On 4/11/2023 at 12:16 PM, Sda33 said:

J'avance un peu, je suis sur un produit avec 3 champs en BDD, 3 champs bien visibles en FO, seulement 2 visibles en BO.

Les champs ont les id 158, 159 et 160. Le 160 ne s'affiche pas en BO.

La requête getCustomizationFields de Product.php me renvoie bien les 3 champs (cf capture d'écran).

Mais la fonction _getCustomizationFieldIds($labels, $alreadyGenerated, $obj) ne me retourne que les deux premiers.
Voir capture d'écran, j'affiche le return implode('¤', $customizableFieldIds);

 

En remontant un peu (ligne 4249), je sais que j'ai un problème sur AdminProductsController dans la function _displayLabelFields(...)

Bien donc depuis je suis remontée sur la classe Product.php.

Le problème vient de la fonction getCustomizationFields(), et plus particulièrement du foreach en fin de fonction.

Pour un produit avec 4 champs de personnalisation texte (3 seulement s'affichaient) :

  • Avant foreach, mon $result comprend bien 4 lignes, une pour chaque id
  • Dans le foreach, toujours 4 lignes, mais la dernière ligne était un duplicata de l'une des 3 autres, écrasant systématiquement les valeurs de la dernière donc.
    • (premier passage du foreach, la 4è ligne de l'array est la copie de la première, deuxième passage c'est une copie de la 2è, etc)
  • L'utilisation du "$row" comme nom de variable pour cette boucle est à l'origine du problème

 

La correction, j'ai renommé la variable, donc :

J'ai remplacé foreach ($result as $row)

Par foreach ($result as $myrow) (et bien entendu adapté la phrase du dessous)

 

J'espère que cela pourra aider ceux qui avaient le même problème que moi à cet endroit. 

Sda33

Sda33

@Eolia Eurêka ! Je viens de trouver où était le problème de l'affichage des champs de personnalisation en Back Office, fiche produit.

Pour rappel, le bug était : quel que soit le nombre de champs de personnalisation pour ce produit en base de données, l'interface n'affichait jamais le dernier de la liste.

On 4/11/2023 at 12:16 PM, Sda33 said:

J'avance un peu, je suis sur un produit avec 3 champs en BDD, 3 champs bien visibles en FO, seulement 2 visibles en BO.

Les champs ont les id 158, 159 et 160. Le 160 ne s'affiche pas en BO.

La requête getCustomizationFields de Product.php me renvoie bien les 3 champs (cf capture d'écran).

Mais la fonction _getCustomizationFieldIds($labels, $alreadyGenerated, $obj) ne me retourne que les deux premiers.
Voir capture d'écran, j'affiche le return implode('¤', $customizableFieldIds);

 

En remontant un peu (ligne 4249), je sais que j'ai un problème sur AdminProductsController dans la function _displayLabelFields(...)

Bien donc depuis je suis remontée sur la classe Product.php.

Le problème vient de la fonction getCustomizationFields(), et plus particulièrement du foreach en fin de fonction.

Pour un produit avec 4 champs de personnalisation texte (3 seulement s'affichaient) :

  • Avant foreach, mon $result comprend bien 4 lignes, une pour chaque id
  • Dans le foreach, toujours 4 lignes, mais la dernière ligne était un duplicata de l'une des 3 autres, écrasant systématiquement les valeurs de la dernière donc.
    • (premier passage du foreach, la 4è ligne de l'array est la copie de la première, deuxième passage c'est une copie de la 2è, etc)
  • L'utilisation du "$row" comme nom de variable pour cette boucle est à l'origine du problème

 

La correction, j'ai renommé la variable, donc :

J'ai remplacé foreach ($result as $row)

Par foreach ($result as $myrow)

 

J'espère que cela pourra aider ceux qui avaient le même problème que moi à cet endroit. 

×
×
  • Create New...