Mise à jour de la table ui_bookmark lors de l'ajout de colonnes via ui_component XML

9

Dans Magento 2, les ui_componentgrilles basées vous permettent de réorganiser les colonnes et Magento se souviendra de vos paramètres la prochaine fois que vous vous connecterez. Pour ce faire, Magento enregistre les données dans le ui_bookmarktableau (via un Magento\Ui\Model\Bookmarkobjet modèle).

Bien que cette fonctionnalité soit soignée, elle peut créer des problèmes lorsqu'un développeur d'extension ou un intégrateur de système utilise Magento ui_componentXML pour ajouter des colonnes à une table. S'il y a des données personnalisées, ui_bookmarkMagento ignorera (apparemment) l'ordre de tri d'une nouvelle colonne et des choses étranges / inattendues peuvent se produire.

Existe-t-il une meilleure pratique et / ou un système pour les développeurs d'extensions qui souhaitent ajouter des colonnes à une grille d'interface utilisateur (Magento ou la leur) et s'assurer qu'une colonne est quelque part par rapport aux autres? c'est-à-dire - "Ce deuxième bouton d'action doit toujours apparaître en dernier, ou toujours apparaître en avant-dernier", ou "le champ du nom doit toujours être après ID.

Un développeur d'extensions doit-il, via une app/code/Package/Module/Setup/...classe, accéder au ui_bookmarktableau et mettre à jour ces entrées lui-même? Ou existe-t-il une meilleure façon d'accomplir cela? Ou les développeurs d'extensions doivent-ils simplement vivre avec une colonne ajoutée à des endroits inattendus lorsqu'un utilisateur a déjà une entrée ui_bookmark?

Alan Storm
la source

Réponses:

4

Je pense que c'est un bug dans magento2.

Je nettoie généralement la table ui_bookmark après avoir ajouté de nouvelles colonnes par n'importe quel module.

Magento2 enregistre les positions des colonnes même s'il n'y a aucune modification dans l'ordre des colonnes.

"positions":{
    "ids":0,
    "increment_id":1,
    "store_id":2,
    "created_at":3,
    "billing_name":4,
    "shipping_name":5,
    ...
}

Mais si les positions des colonnes ne sont stockées qu'après les modifications de l'utilisateur, nous aurons le même problème avec les nouvelles colonnes.

Si sera ajouté un ordre relatif comme name column after idou my_column before actions, nous aurons un glissement laid des colonnes dans l'interface utilisateur.

Si vous effacez le ui_bookmarktableau pendant l'installation du module, vous pouvez effacer les paramètres utilisateur personnalisés pour la liste.

Peut-être que les développeurs principaux doivent corriger la colonne d'actions en dernier comme solution partielle.

Je pense que cette question n'a pas la seule bonne décision

Max
la source