Dodałem nową kolumnę do tabeli o sales_order
nazwie export_status
, teraz chcę dodać nową kolumnę siatki zamówień z danymi z nowej sales_order
kolumny.
Udało mi się dodać kolumnę do the sales_order_grid
tabeli.
$installer->getConnection()->addColumn($installer->getTable("sales_order_grid"), "xml_exported", [
'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'comment' => 'XML Exported'
]);
Jak mogę teraz sprawić, by faktycznie wyświetlał się w siatce zamówień z wartością z sales_order
export_status
kolumny?
magento2
magento-2.1
order-grid
André Ferraz
źródło
źródło
Odpowiedzi:
Po wielu kopaniach w rdzennym kodzie Magento znalazłem rozwiązanie mojego pytania. Zamiast dodawać kolumnę do siatki za pośrednictwem bazy danych, utworzyłem komponent interfejsu użytkownika
sales_order_grid.xml
pod[COMPANY]/[MODULE]/view/adminhtml/ui_component/sales_order_grid.xml
Następnie utworzył klasę interfejsu użytkownika
[COMPANY]/[MODULE]/Ui/Component/Listing/Column/Status.php
źródło
filter_condition_callback
którym możesz dodać własny filtr niestandardowy według pola. Nie mów „Co masz na myśli?” tym razem;)Moje rozwiązanie może być nieco bardziej wydajne, ponieważ jest zgodne z natywnym sposobem dodawania kolumny do siatki i nie trzeba ładować każdego zamówienia wyświetlanego na stronie, aby uzyskać dane kolumny ( zamiast tego należy użyć tabeli Sales_order_grid ). Powyższe jest doskonałym przykładem tworzenia niestandardowego mechanizmu renderującego.
vendor / [vendor] / [package] /view/adminhtml/ui_component/sales_order_grid.xml
Pamiętaj, że musisz włączyć kolumnę za pomocą rozwijanego widżetu nad siatką zamówień, zanim się pojawi.
vendor / [vendor] / [package] /etc/di.xml
Przykładowy kod instalacyjny, aby dodać kolumnę do tabeli sales_order_grid (użyj tego w skrypcie instalacyjnym / aktualizacyjnym). Nawiasem mówiąc, ten sam kod działa dla tabeli sales_order.
Mam nadzieję, że to pomoże! :-)
źródło
sales_order_grid.xml
którym powinieneś zamknąć swój tag <listing> </listing>, w przeciwnym razie zwróci błąd xmlAby utworzyć nową kolumnę w siatce zamówień, odsyłam do Magento Default Module vendor / magento / module-customer-balance
W moim przypadku kolumna „custom_column” już istnieje w tabeli Sales_order.
Muszę pokazać kolumnę „custom_column” w siatce zamówień
Krok 1: Dodaj nową kolumnę w tabeli sales_order_grid
Krok 2: Plik di.xml w app \ code [Vendor] [NameSpace] \ etc \ di.xml
Krok 3: Utwórz plik układu sales_order_grid.xml w app \ code [Vendor] [NameSpace] \ view \ adminhtml \ ui_component
Uwaga: Zostało to przetestowane w wersji 2.2.6 Magento
źródło
Następnie utworzył klasę interfejsu użytkownika, aby ją wyrenderować.
Nie zapomnij wyczyścić pamięci podręcznej.
źródło
Utworzyłem moduł niestandardowy, który doda niestandardowy atrybut w encji Zlecenie sprzedaży, a następnie pokaże w siatce Administracyjne zamówienie sprzedaży.
plik module.xml do zdefiniowania modułu. app \ code \ COMPANY \ MODULE \ etc \ module.xml
plik di.xml w app \ code \ COMPANY \ MODULE \ etc \ di.xml
InstallData.php, aby dodać niestandardowy atrybut export_status do tabeli bazy danych
app \ code \ COMPANY \ MODULE \ Setup \ InstallData.php
sales_order_grid.xml, aby dodać niestandardową kolumnę w siatce administracyjnej zlecenia sprzedaży.
Możesz pobrać pełny moduł, klikając poniższy link http://vdcstaging.co.in/download/add-custom-culumn-to-admin-grid.zip
źródło