2011-10-20 36 views
3

我想本質上創建一個分割屏幕視圖,一個充滿產品的遠程存儲庫的網格,另一個網格顯示網格中的本地存儲庫。加載遠程數據源到Magento管理產品網格

我認爲,基本上總結一下,如果你能告訴我如何簡單地將遠程源代碼納入網格,我會給出部分功勞......我想我甚至可以從那裏處理它。請仔細考慮一下,我真的不想聽到如何在config.xml中配置我的資源,我已經可以用遠程數據庫來做到這一點,我無法從它加載對象/集合。

謝謝你們。

+0

好吧,目前我正在嘗試創建一個基於catalog_product_flat_1在遠程數據庫中的模型,它創建的模型很好,但它不會加載任何數據。我已經嘗試了其他一些東西......如果一切都失敗了,我可能只是創建泛型varien_objects並將數據手動拉入到它們中,並將它們添加到泛型集合中......我知道它會像它一樣不起作用是。 – sucitivel

回答

1

OK--所以對於我們這些嘗試過這樣的事情的人來說,你首先意識到的是,當你需要多個數據庫作爲模塊的源代碼時......實際上你需要模塊這樣做(如果我錯了,請有人加入並糾正我)。

第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 /產品/ 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()."::"); 

...這個模型應該像大多數情況下的典型產品模型一樣運行,除非你使用遠程數據庫,快樂的編碼!

+0

我想跟進並說,在這種情況下,高級使用集合是不可能的,正如我在這裏給出的。如果你說複製Product Grid控件並插入這個新的模型,所有其他的東西都是平等的,它不會工作......但其餘的答案對這裏的空間有一點點 - 如果你很聰明應該能夠以某種方式得到它。 – sucitivel

+0

爲了提高知名度,我試圖做類似的事情,而且這個問題很難找到。我假設有大量的開發人員在那裏從事像我這樣的遷移工作,而舊的API方法根本不實際 - 在處理大量遠程數據時,直接使用Magento模型的速度會快得多。 – pspahn

+0

你有辦法爲遠程表添加表前綴嗎? – pspahn

相關問題