J'ai ajouté une nouvelle colonne à la table sales_order
appelée export_status
, maintenant je veux ajouter une nouvelle colonne de grille de commande avec les données de la nouvelle sales_order
colonne.
J'ai réussi à ajouter une colonne au the sales_order_grid
tableau.
$installer->getConnection()->addColumn($installer->getTable("sales_order_grid"), "xml_exported", [
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'comment' => 'XML Exported'
]);
Comment puis-je maintenant le faire afficher dans la grille des commandes avec la valeur de la sales_order
export_status
colonne?
magento2
magento-2.1
order-grid
André Ferraz
la source
la source
Réponses:
Après beaucoup de fouilles dans le code de base de magento, j'ai trouvé une solution à ma question. Au lieu d'ajouter une colonne à la grille via la base de données, j'ai créé un composant d'interface utilisateur
sales_order_grid.xml
sous[COMPANY]/[MODULE]/view/adminhtml/ui_component/sales_order_grid.xml
Ensuite, j'ai créé la classe UI sous
[COMPANY]/[MODULE]/Ui/Component/Listing/Column/Status.php
la source
filter_condition_callback
où vous pouvez ajouter votre propre filtre personnalisé selon le champ. S'il vous plaît ne dites pas "Que voulez-vous dire?" cette fois;)Ma solution peut être un peu plus efficace car elle suit la manière native d'ajouter une colonne à la grille, et vous n'aurez pas à charger chaque commande affichée sur la page pour obtenir les données de la colonne (en utilisant la table sales_order_grid à la place). Ce qui précède est un excellent exemple de la façon de créer un rendu personnalisé.
fournisseur / [fournisseur] / [package] /view/adminhtml/ui_component/sales_order_grid.xml
Veuillez noter que vous devez activer la colonne à l'aide du widget déroulant au-dessus de la grille de commande avant qu'elle n'apparaisse.
fournisseur / [fournisseur] / [package] /etc/di.xml
Exemple de code de configuration pour ajouter une colonne à la table sales_order_grid (utilisez-la dans votre script d'installation / mise à niveau). Au fait, le même code fonctionne pour la table sales_order.
J'espère que cela aide! :-)
la source
sales_order_grid.xml
vous devez fermer votre balise <listing> </listing> ou cela retournera une erreur de xmlPour créer une nouvelle colonne dans la grille de commande, j'ai référé Magento Default Module vendor / magento / module-customer-balance
Dans mon cas, la colonne 'custom_column' existe déjà dans la table sales_order.
Je dois afficher la colonne 'custom_column' dans la grille de commande
Étape 1: ajouter une nouvelle colonne dans la table sales_order_grid
Étape 2: fichier di.xml dans l'application \ code [Fournisseur] [NameSpace] \ etc \ di.xml
Étape 3: créer un fichier de mise en page sales_order_grid.xml sous app \ code [Vendor] [NameSpace] \ view \ adminhtml \ ui_component
Remarque: Cela a été testé dans Magento version 2.2.6
la source
Ensuite, créé la classe d'interface utilisateur pour le rendre.
N'oubliez pas de vider le cache.
la source
J'ai créé un module personnalisé qui ajoutera un attribut personnalisé dans l'entité Commande client, puis s'affichera dans la grille de commande client.
fichier module.xml pour définir le module. app \ code \ COMPANY \ MODULE \ etc \ module.xml
fichier di.xml dans app \ code \ COMPANY \ MODULE \ etc \ di.xml
InstallData.php pour ajouter un attribut personnalisé export_status dans la table de base de données
app \ code \ COMPANY \ MODULE \ Setup \ InstallData.php
sales_order_grid.xml pour ajouter une colonne personnalisée dans la grille d'administration des commandes client.
Vous pouvez télécharger le module complet en cliquant sur le lien ci-dessous http://vdcstaging.co.in/download/add-custom-culumn-to-admin-grid.zip
la source