- Posts: 2697
- Thank you received: 74
Récupérer le nom des champs perso
5 months 8 hours ago - 5 months 3 hours ago #372211
by erickb
Récupérer le nom des champs perso was created by erickb
-- HikaShop version -- : 6.5
-- Joomla version -- : 6.1
-- PHP version -- : 8.4
Bonjour
Dans product/listing_div.php
Il load listing_img_title.php
Et je ne récupère rien
Je ne veux pas la valeur qui est stockée dans le champ perso de la db mais bien le libellé
badge_new = nouveauté
Comment puis-je récupérer le libellé ?
Merci
-- Joomla version -- : 6.1
-- PHP version -- : 8.4
Bonjour
Dans product/listing_div.php
Code:
$fieldClass = hikashop_get("class.field");
$this->badgeField = $fieldClass->getField("product_badges");
$this->sizeField = $fieldClass->getField("product_size_values");
Il load listing_img_title.php
Code:
$badgesHtml = "";
if(!empty($this->badgeField) && !empty($this->row->product_badges)) {
$this->badgeField->currentElement = $this->row;
$badgesHtml = $this->fieldsClass->show(
$this->badgeField,
$this->row->product_badges
);
}
Et je ne récupère rien
Je ne veux pas la valeur qui est stockée dans le champ perso de la db mais bien le libellé
badge_new = nouveauté
Comment puis-je récupérer le libellé ?
Merci
Last edit: 5 months 3 hours ago by erickb.
Please Log in or Create an account to join the conversation.
5 months 4 hours ago #372212
by nicolas
Replied by nicolas on topic Récupérer le nom des champs perso
Bonjour,
Le souci vient d'un seul point : l'appel à getField. Quand on lui passe une clé (un field_namekey, donc une chaîne et pas un id numérique), getField a besoin du nom de la table du champ en 2e argument. Sans ce 2e argument, il fait sa requête avec field_table = '' (vide), ne trouve aucun champ, et renvoie false.
Du coup $this->badgeField vaut false, votre test if(!empty($this->badgeField) && ...) n'est jamais vrai, le bloc n'est pas exécuté, et $badgesHtml reste vide. C'est pour ça que vous ne récupérez rien (ni le libellé, ni même la valeur).
La correction est d'indiquer la table du champ (pour un champ produit, c'est "product", la table affichée dans Affichage > Champs personnalisés) :
Une fois le champ correctement chargé, votre show() renvoie directement le libellé, pas la valeur stockée. Pour un champ de type liste (dropdown, radio, case à cocher), show() convertit en interne la valeur stockée en libellé de l'option, et gère même le cas de plusieurs valeurs séparées par des virgules :
Le souci vient d'un seul point : l'appel à getField. Quand on lui passe une clé (un field_namekey, donc une chaîne et pas un id numérique), getField a besoin du nom de la table du champ en 2e argument. Sans ce 2e argument, il fait sa requête avec field_table = '' (vide), ne trouve aucun champ, et renvoie false.
Du coup $this->badgeField vaut false, votre test if(!empty($this->badgeField) && ...) n'est jamais vrai, le bloc n'est pas exécuté, et $badgesHtml reste vide. C'est pour ça que vous ne récupérez rien (ni le libellé, ni même la valeur).
La correction est d'indiquer la table du champ (pour un champ produit, c'est "product", la table affichée dans Affichage > Champs personnalisés) :
Code:
$fieldClass = hikashop_get('class.field');
$this->badgeField = $fieldClass->getField('product_badges', 'product');
$this->sizeField = $fieldClass->getField('product_size_values', 'product');
Une fois le champ correctement chargé, votre show() renvoie directement le libellé, pas la valeur stockée. Pour un champ de type liste (dropdown, radio, case à cocher), show() convertit en interne la valeur stockée en libellé de l'option, et gère même le cas de plusieurs valeurs séparées par des virgules :
Code:
$badgesHtml = $this->fieldsClass->show($this->badgeField, $this->row->product_badges);
// renvoie "nouveauté"
The following user(s) said Thank You: erickb
Please Log in or Create an account to join the conversation.
5 months 3 hours ago - 5 months 3 hours ago #372214
by erickb
Replied by erickb on topic Récupérer le nom des champs perso
Je vais tester ça mais je crois que je vais tout simplement donner valeur = libellé
Merci
Merci
Last edit: 5 months 3 hours ago by erickb.
Please Log in or Create an account to join the conversation.
Time to create page: 0.042 seconds