Bonjour @cybermad,
De ce que j'ai compris, vous avez installé un module d'abonnement ou vous en avez créé un puisque AdminMemberPlanDetail n'est pas un controlleur natif de PrestaShop.
Je vais supposer que le module fonctionne bien et que la requête SQL respecte le schéma de la table ps_member_plan_detail.
En effet, il n'est pas possible de prendre directement l'id du customer pour la mettre dans l’attribut prefix.
Les valeurs des colonnes sont remplies automatiquement par PrestaShop qui se sert du résultat de la requête SQL.
Mais j'ai un peu cherché et il existe un moyen de se servir des valeurs des autres colonnes, ici de la colonne ID : c'est l'attribut callback.
Voici le code pour la fields_list :
$this->fields_list = array_merge($this->fields_list, array( 'abonnement' => array( 'title' => $this->trans('Abonnement', array(), 'Admin.Global'), 'orderby' => false, 'search' => false, 'callback' => 'getMemberPlanLink' ) ));
Et voilà le code pour la fonction getMemberPlanLink qui va remplir la colonne abonnement :
public function getMemberPlanLink($value, $row) { $link = $this->context->link->getAdminLink('AdminMemberPlanDetail').'&id_customer='.(int)$row['id_customer']; return '<a href="'.$link.'">' . $value . '</a>'; }
Notez que j'ai supprimé l'attribut max_length.
En effet, mettre un lien n'est pas vraiment prévu par le système, donc quand on dépasse le nombre de caractères maximal, on obtient ceci dans le HTML de la colonne :
<span title="<a href=" http:="" localhost="" prestashop1710="" adminbo="" index.php?controller="AdminMemberPlanDetail&token=61eef3148aeb68ef1e95201c8ea04663&id_customer=2"">3"> <a...< span=""> </a...<> </span>
En gros, le système englobe la colonne d'un span avec sa valeur dans l'attribut title. Donc avec du HTML, ça fait vite n'importe quoi...
Pour aller plus loin...
• Je ne doute pas du fait que vous avez fait des recherches pour résoudre votre problème, mais n'hésitez pas à les pousser au maximum.
Il y a beaucoup de ressources pour la programmation, sûrement plus que dans n'importe quel domaine.
Pour résoudre votre problème, j'ai cherché : add link to column prestashop
• Plutôt que d'utiliser le mécanisme d'override, je vous conseille de créer un module.
Voici la documentation officielle : https://devdocs.prestashop.com/1.7/modules/
Et pour résoudre votre situation dans un module : https://webkul.com/blog/how-to-modify-fields-list-in-prestashop/ (en utilisant par-dessus l'attribut callback)
Bonne programmation !
Kaudaj.
EDIT : Trop lent, @Alexandre Carette a tout bon ! A part peut-être le maxlength du coup