Filtrage d'erreur lors de l'utilisation collection d'objets Varien personnalisé dans la grille d'administration

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

  •  16-10-2019
  •  | 
  •  

Question

Je l'ai créé une collection d'objets Varien personnalisé pour mon module d'administration (car les données ne provient pas d'un db) et ont obtenu pour montrer avec succès dans une grille d'administration. J'ai construit la collection en utilisant le code suivant:

$collection = new Varien_Data_Collection();

boucle à l'intérieur:

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

Il est tout fonctionne parfaitement sauf quand je tente de filtre à l'aide du système de filtrage grille, il renvoie cette erreur:

  

Erreur fatale: Appel à la méthode non définie Varien_Data_Collection :: addFieldToFilter () dans /data/www/vhosts/adammoss.co.uk/httpdocs/magento/app/code/core/Mage/Adminhtml/Block/Widget/Grid. php sur la ligne 472

Je sais que addFieldToFilter() est utilisé uniquement sur les objets EAV, que ma collection a évidemment aucune de. Ma question est de savoir si quelqu'un sait de toute façon de contourner cela?

Puis-je ajouter cette méthode à mon objet d'une manière ou devrais-je créer un modèle pour que cela fonctionne?

****** ****** MISE À JOUR 08/02/2012

OK, donc je l'ai un peu changé la façon dont je le fais. Je suis toujours en utilisant ma classe personnalisée qui est une copie exacte de Filesystem.php

Ma collection de grille ressemble maintenant à ceci:

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

    return parent::_prepareCollection();
}

Il charge dans tous mes fichiers dans le réseau comme prévu, et maintenant Pagine! Cependant, pour une raison quelconque, elle ne sera pas filtrer ou trier, même si je suis littéralement juste en utilisant la classe exactement le même que Filesystem.php.

Je vais vérifier la classe Mage_Backup comme vous le suggérez.

Était-ce utile?

La solution

Le problème pas dans des entités à base de EAV. Méthode addFieldToFilter() est disponible uniquement dans Varien_Data_Db_Collection, que EAV et modèles standards ORM Extend. Si vous voulez avoir votre module de réseau admin travailler avec votre collection de la même manière que cela fonctionne avec la collection DB, vous devez implémenter deux méthodes:

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

Exemple d'une telle mise en œuvre de collection personnalisée vous pouvez trouver en classe Varien_Data_Collection_Filesystem qui utilise FS sur la base des collections. Ce genre de collection, par exemple, utilisé dans le module Mage_Backup pour afficher la grille avec les fichiers de sauvegarde.

Cordialement, Ivan

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top