1

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

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

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

在 1.3.2.4 中,网格呈现但显示“未找到记录”。

有谁知道可能导致这些问题的原因,以及是否有更好的方法在 Magento 中显示文件中的信息?

4

1 回答 1

0

您可以看到条目(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 作业数据存储在数据库中,这样可以更轻松地提取数据。

于 2012-05-21T21:13:45.157 回答