So fügen Sie einen Filterindex mit Aliasnamen in der UI-Komponente von Grid Magento2 hinzu
-
13-12-2019 - |
Frage
Ich habe mein benutzerdefiniertes Modul mit dem Admin-Grid erstellt und dann versucht, es hinzuzufügen order increment id
zu meinem benutzerdefinierten Raster hinzufügen, indem ich die Rastersammlung mit dem Aliasnamen ändere.
Der order id
wird im Raster angezeigt.Wenn ich jetzt versuche, nach zu filtern increment_id
, dann wird ein Fehler ausgegeben.Ohne Alias funktioniert es einwandfrei. Wenn ich zu diesem Zeitpunkt einen Alias hinzufüge und versuche zu filtern, wird der Fehler ausgegeben.
Es folgt mein Code:
<column name="order_id">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="filter" xsi:type="string">text</item>
<item name="filter_index" xsi:type="string">o.increment_id</item>
<item name="add_field" xsi:type="boolean">false</item>
<item name="label" xsi:type="string" translate="true">Order ID</item>
<item name="sortOrder" xsi:type="number">75</item>
</item>
</argument>
</column>
app\code\Sugarcode\Test\Model\ResourceModel\Test\Grid\Collection.php
protected function _initSelect()
{
parent::_initSelect();
$this->getSelect()->joinLeft(
['o' => 'sales_order_grid'],
"(o.entity_id = main_table.id)",
[
'o.increment_id as order_id'
]
);
//$this->printLogQuery(true);
return $this;
}
Sagen Sie mir also bitte, wie ich das hinzufügen kann filter_index
in Magento2 mit UI-Komponente?
Lösung
Ich habe es mit dem erhalten addFiltertoMap
Welches ist in definiert
app\code\Sugarcode\Test\Model\ResourceModel\Test\Grid\Collection.php
protected function _construct()
{
parent::_construct();
$this->addFilterToMap(
'order_id',
'o.increment_id'
);
}
Andere Tipps
Fügen Sie diese Methode in die folgende Klasse ein
app\code\Sugarcode\Test\Model\ResourceModel\Test\Grid\Collection.php
public function addFieldToFilter($field, $condition = null) { if ($field === 'order_id') { // custom condition return; } return parent::addFieldToFilter($field, $condition); }