私はsales_order_grid_collection_load_afterとsales_order_grid_collection_load_beforeのイベントを検索して、受注グリッドをカスタマイズしていました。
Magento 2にはこのようなイベントはありません。Magento 2 Adminのすべてのグリッドをレンダリングするための一般的なイベント 'core_collection_abstract_load_after'または 'core_collection_abstract_load_before'ディスパッチ。
_renderFiltersBefore()関数をオーバーライドして、受注グリッドに列を追加したり、sales_order_gridを使用してテーブルを結合することができます。ここでの手順は以下のとおりです。
ステップ1: /アプリ/コードで販売注文グリッドデータソースのベンダー/モジュールの/ etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
<arguments>
<argument name="collections" xsi:type="array">
<item name="sales_order_grid_data_source" xsi:type="string">Vendor\Module\Model\ResourceModel\Order\Grid\Collection</item>
</argument>
</arguments>
</type>
ステップ2クラスを指定します:)が_renderFiltersBeforeを(上書きするアプリ/コード/ベンダー/モジュール/モデル/ ResourceModel /発注/グリッドに
<?php
namespace Vendor\Module\Model\ResourceModel\Order\Grid;
use Magento\Sales\Model\ResourceModel\Order\Grid\Collection as OriginalCollection;
use Magento\Framework\Data\Collection\Db\FetchStrategyInterface as FetchStrategy;
use Magento\Framework\Data\Collection\EntityFactoryInterface as EntityFactory;
use Magento\Framework\Event\ManagerInterface as EventManager;
use Psr\Log\LoggerInterface as Logger;
class Collection extends OriginalCollection
{
protected $_authSession;
public function __construct(
EntityFactory $entityFactory,
Logger $logger,
FetchStrategy $fetchStrategy,
EventManager $eventManager,
\Magento\Backend\Model\Auth\Session $authSession
)
{
$this->_authSession = $authSession;
parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager);
}
protected function _renderFiltersBefore() {
$user = $this->_authSession->getUser();
$joinTable = $this->getTable('your_table');
$this->getSelect()->joinLeft($joinTable, 'main_table.entity_id = your_table.order_id', ['user_id']);
parent::_renderFiltersBefore();
}
}
?>
をコレクションクラスを追加します。
ステップ3 - オプション: adminhtml/ui_component/sales_order_grid.xml
<?xml version="1.0" encoding="UTF-8"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<columns name="sales_order_columns">
<column name="user_id">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="filter" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">User ID</item>
</item>
</argument>
</column>
</columns>
</listing>
/アプリ/コード/ベンダー/モジュール/ビューで標準のグリッド・コンポーネントを変更し、受注グリッドのユーザIDの新しい列を表示するには
リファレンスはhere