Magento网格视图使用自定义集合


Magento grid view using custom collection

我目前正在为Magento编写EPOS集成。当下订单时,它的ID被放置在队列文件中。cron每分钟查看一次队列,向eppos web api发送最高订单,然后根据结果将ID移动到成功列表文件或失败列表文件中。

为了向用户显示这些列表的内容,我创建了一个管理页面,该页面读取文件(包含序列化数组),创建一个包含每个订单的订单ID、客户名称和时间戳的varien_object,然后将所有这些存储在一个Varien_Data_collection实例中。然后将该集合传递给grid.php中的_preparecall函数以呈现网格视图。

在1.4.1.1中,网格呈现得很好,但是分页被破坏并且过滤不起作用。

在1.3.2.4网格渲染,但说有'没有记录发现'。

有谁知道是什么导致了这些问题,如果有一个更好的方式去显示信息从一个文件在Magento?

您可以看到条目(1.4+),但不能过滤的原因是Magento正在使用集合api来修改对象。如果您只是从模型中提取值,这没什么大不了的,但如果您正在搜索和过滤,Magento需要将集合作为数据库的实例。它使用Varien_Db_Select对象来进行查询,解析为原始sql,所以这不会在数组上工作。

我建议用不同的方法处理这些数据。

听起来你正在处理一个平面文件,所以构造一个sql查询来获取所有内容的明显解决方案不会削减它。我将尝试创建一个Zend_Db_Table的实例,并动态地填充这些值。

像这样:

class Foo_Bar_Model_Resource_Success_Collection extends Mage_Core_Model_Resource_Db_Abstract
{
    public function _construct()
    {
        //declare write adapter in config
        $table = new Zend_Db_Table('my_db.my_table'); 
        foreach($this->getEposArray() as $entry)  
            $table->insert($entry);
        $this->_init('my_table', 'id');
    }
}

无可否认,我从来没有做过这样的事情,但是我以前遇到过自定义网格过滤器的问题,并且知道如果你想要搜索,你需要把你的数据放在某种表格中。查看Zend关于这个问题的文档。我很确定在Magento内部有办法做到这一点,但我无法开始思考解决方案。

我的建议是,将cron作业数据存储在数据库中,这样可以更容易地将数据提取出来。