Filterfehler bei Verwendung einer benutzerdefinierten Varien -Objektsammlung im Administratorraster

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe eine benutzerdefinierte Varien -Objektsammlung für mein Administratormodul erstellt (da die Daten nicht von einem DB stammen) und habe sie erfolgreich in einem Administratorraster angezeigt. Ich habe die Sammlung mit dem folgenden Code erstellt:

$collection = new Varien_Data_Collection();

Innenschleife:

$object = new Varien_Object();
$object->setFileName($filename);
$collection->addItem($object);

Es funktioniert alles perfekt, außer wenn ich versuche, mit dem Gitterfiltersystem zu filtern, wird dieser Fehler zurückgegeben:

Fataler Fehler: Rufen Sie die undefinierte Methode an variien_data_collection :: addfieldtofilter () in /data/www/vhosts/adammoss.co.uk/httpdocs/magento/app/code/core/mage/adminhtml/block/grid/grid.php. 472

ich weiß das addFieldToFilter() wird nur für EAV -Objekte verwendet, die meine Sammlung offensichtlich nichts hat. Meine Frage ist, ob jemand irgendeine Weise damit weiß?

Kann ich diese Methode auf irgendeine Weise an mein Objekt anhängen oder müsste ich ein Modell erstellen, damit dies funktioniert?

****** update 08/02/2012 ******

Ok, ich habe die Art und Weise, wie ich das mache, leicht verändert. Ich benutze immer noch meine benutzerdefinierte Klasse, die ein genaues Duplikat von ist Filesystem.php

Meine Gittersammlung sieht jetzt so aus:

protected function _prepareCollection()
{
    $collection = new MyNamespace_MyModule_Model_Csv_Collection();
    $collection->addTargetDir('my/target/path');
    $this->setCollection($collection);

    return parent::_prepareCollection();
}

Es wird wie erwartet alle meine Dateien in das Netz geladen und paginiert jetzt! Aus irgendeinem Grund wird es jedoch immer noch nicht filtern oder sortieren, obwohl ich buchstäblich nur die gleiche Klasse verwende wie Filesystem.php.

Ich werde es prüfen Mage_Backup Klasse, wie Sie vorgeschlagen haben.

War es hilfreich?

Lösung

Das Problem nicht in EAV -basierten Unternehmen. Methode addFieldToFilter() ist nur in verfügbar Varien_Data_Db_Collection, Diese EAV- und Standard -ORM -Modelle erstrecken sich. Wenn Sie Ihr Admin -Grid -Modul auf die gleiche Weise wie mit der DB -Sammlung mit Ihrer Sammlung arbeiten lassen möchten, müssen Sie zwei Methoden implementieren:

  • addFieldToFilter($filterName, $conditionArray)
  • setSort($fieldName, $direction)

Beispiel für eine solche Implementierung der benutzerdefinierten Sammlung, in der Sie finden können Varien_Data_Collection_Filesystem Klasse, die FS -basierte Sammlungen verwendet. Diese Art von Sammlung zum Beispiel verwendet in Mage_Backup Modul zum Anzeigen von Raster mit Sicherungsdateien.

Mit freundlichen Grüßen Ivan

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top