1

私は現在、Magento の EPOS 統合を作成しています。注文が行われると、その ID がキューファイルに配置されます。1 分に 1 回、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 に答える