de error cuando se utiliza el filtrado de encargo Varien colección de objetos en la rejilla de administración

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

  •  16-10-2019
  •  | 
  •  

Pregunta

He creado una costumbre Varien colección de objetos para mi módulo de administración (ya que los datos no es de una db) y lo tengo éxito para mostrar en una cuadrícula de administración. Construí la colección mediante el siguiente código:

$collection = new Varien_Data_Collection();

bucle Interior:

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

Es todo funciona a la perfección excepto cuando trato de filtro utilizando la red sistemas de filtrado, devuelve este error:

Fatal error: Llamada a método no definido Varien_Data_Collection :: addFieldToFilter () en /data/www/vhosts/adammoss.co.uk/httpdocs/magento/app/code/core/Mage/Adminhtml/Block/Widget/Grid. php en la línea 472

Sé que addFieldToFilter() sólo se utiliza en objetos EAV, que mi colección, obviamente, no tiene ninguno de. Mi pregunta es si alguien sabe de alguna forma de evitar esto?

¿Puedo añadir que a mi método de objeto de un modo u tendría que crear un modelo para que esto funcione?

****** ****** ACTUALIZACIÓN 08/02/2012

OK, así que he cambiado un poco mi forma de hacer esto. Todavía estoy usando mi clase personalizada que es un duplicado exacto de Filesystem.php

Mi colección de cuadrícula ahora se ve así:

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

    return parent::_prepareCollection();
}

Se carga en todos mis archivos en la red como se esperaba, y ahora paginarlo! Sin embargo, por alguna razón que aún no funciona en filtro o la ordenación, a pesar de que estoy, literalmente, sólo usando exactamente la misma clase como Filesystem.php.

Voy a comprobar la clase Mage_Backup como usted sugiere.

¿Fue útil?

Solución

El problema no en entidades basadas EAV. Método addFieldToFilter() está disponible sólo en Varien_Data_Db_Collection, que los modelos estándar ORM EAV y se extienden. Si le gustaría tener el módulo de administración de rejilla trabajar con su colección de la misma manera, ya que funciona con la colección de DB, es necesario implementar dos métodos:

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

Ejemplo de dicha aplicación colección personalizada se pueden encontrar en la clase Varien_Data_Collection_Filesystem que utiliza FS colecciones basan. Este tipo de colección, por ejemplo, que se utiliza en el módulo Mage_Backup para mostrar cuadrícula con los archivos de copia de seguridad.

Atentamente, Ivan

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top