将远程数据源加载到Magento Admin Products Grid中

时间:2011-10-20 21:49:41

标签: php magento

我正在尝试基本上创建一个分屏视图,一个充满产品的远程存储库网格,另一个显示网格中的本地存储库。

我认为基本上总结一下,如果你能告诉我如何简单地将远程信息源合并到网格中,我会给予部分功劳......我想我甚至可以从那里处理它。请仔细考虑,我真的不想听到如何在config.xml中配置我的资源,我已经可以用远程数据库来做,我只是无法从中加载对象/集合。

谢谢你们。

1 个答案:

答案 0 :(得分:1)

好的 - 所以对于我们这些尝试过这样的事情的人来说,你首先意识到当你想要一个以上的数据库作为你模块中的一个源时......你实际上需要 2 < / em>这样做的模块(如果我错了,有人会插入并纠正我。)

步骤1:创建一个“虚拟”模块以连接远程数据库。这个模块应该只包含etc /和Model / - 没有其他任何东西真正需要。我的config.xml如下所示:

<config>
<modules>
    <Mage_RepoDummy>
        <version>0.1.0</version>
    </Mage_RepoDummy>
</modules>

<global>
    <resources>
        <repodummy_write>
            <connection>
                <use>repodummy_database</use>
            </connection>
        </repodummy_write>
        <repodummy_read>
            <connection>
                <use>repodummy_database</use>
            </connection>
        </repodummy_read>
        <repodummy_setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </repodummy_setup>
        <repodummy_database>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[brandrepo]]></username>
                <password><![CDATA[*******]]></password>
                <dbname><![CDATA[brandrepo]]></dbname>
                <model>mysql4</model>
                <type>pdo_mysql</type>
                <active>1</active>
            </connection>           
        </repodummy_database>                 
    </resources>      
     <models>
        <repodummy>
            <class>Mage_RepoDummy_Model</class>
            <resourceModel>repodummy_mysql4</resourceModel>
        </repodummy>
        <repodummy_mysql4>
            <class>Mage_RepoDummy_Model_Mysql4</class>
            <entities>
                <product>
                    <table>catalog_product_entity</table>
                </product>
            </entities>
        </repodummy_mysql4>
    </models>
</global>

<adminhtml>  
</adminhtml>

现在您需要以下模型和资源文件:

/Model/Product.php
/Model/Mysql4/Product.php
/Model/Mysql4/Product/Collection.php

在Product.php中:

class Mage_RepoDummy_Model_Product extends Mage_Catalog_Model_Abstract
{
    public function _construct()
    {
        $this->_init('repodummy/product', 'entity_id'); 
    }
} 

在Mysql4 / Product.php中

class Mage_RepoDummy_Model_Mysql4_Product extends Mage_Catalog_Model_Resource_Abstract
{
    public function __construct()
    {
        parent::__construct();
        $this->setType(Mage_Catalog_Model_Product::ENTITY)
             ->setConnection('repodummy_read', 'repodummy_write');
        $this->_productWebsiteTable  = $this->getTable('catalog/product_website');
        $this->_productCategoryTable = $this->getTable('catalog/category_product');
    }
} 

并在Mysql4 / Product / Collection.php

class Mage_RepoDummy_Model_Mysql4_Product_Collection extends Mage_Catalog_Model_Resource_Collection_Abstract {

    protected function _construct()
    {
            $this->_init('repodummy/product');
    }
} 

只是准系统类型的东西,就像你对Magento中的任何基本模型所做的那样。现在从另一个模块,它被绑定到任何其他数据库,可能/可能是您的本地实例,您可以通过调用您的虚拟对象来访问此远程数据存储,如果您想测试它只是做一些简单的事情:

    $test = Mage::getModel('repodummy/product')->load(10367);

    die("::".$test->getSku()."::");

......除了你使用的是远程数据库,这个模型应该像大多数情况下的典型产品模型一样运行,编码很快!