So fügen Sie einen Filterindex mit Aliasnamen in der UI-Komponente von Grid Magento2 hinzu

magento.stackexchange https://magento.stackexchange.com//questions/91686

  •  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?

War es hilfreich?

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top