在管理网格中使用自定义Varien对象收集时过滤错误
-
16-10-2019 - |
题
我为管理员模块创建了一个自定义的Varien对象集合(因为数据不是来自DB),并成功地显示在Admin Grid中。我通过使用以下代码构建了该集合:
$collection = new Varien_Data_Collection();
内部循环:
$object = new Varien_Object();
$object->setFileName($filename);
$collection->addItem($object);
除非我尝试使用网格过滤系统过滤,否则一切都很好,它返回此错误:
致命错误:致电未定义方法varien_data_collection :: 472
我知道 addFieldToFilter()
仅用于EAV对象,我的收藏显然没有。我的问题是有人是否知道这一点?
我可以以某种方式将该方法附加到我的对象上,还是必须为此创建一个模型?
******更新08/02/2012 ******
好的,所以我已经稍微改变了我这样做的方式。我仍在使用我的自定义类,这是 Filesystem.php
我的网格集合现在看起来像这样:
protected function _prepareCollection()
{
$collection = new MyNamespace_MyModule_Model_Csv_Collection();
$collection->addTargetDir('my/target/path');
$this->setCollection($collection);
return parent::_prepareCollection();
}
如预期的那样,它将我的所有文件加载到网格中,现在可以使用!但是,由于某种原因,它仍然不会过滤或排序,即使我实际上只是使用与 Filesystem.php
.
我会检查 Mage_Backup
按照您的建议。
解决方案
这个问题不是基于EAV的实体。方法 addFieldToFilter()
仅在 Varien_Data_Db_Collection
, ,EAV和标准ORM模型扩展。如果您想以与DB Collection合作的方式与您的收藏合作方式一起工作,则需要实现两种方法:
addFieldToFilter($filterName, $conditionArray)
setSort($fieldName, $direction)
您可以在 Varien_Data_Collection_Filesystem
利用基于FS的集合的类。例如,这种收藏在 Mage_Backup
模块显示带有备份文件的网格。
真诚的,伊万