Загрузить удаленный источник данных в сетку продуктов Magento Admin - PullRequest
3 голосов
/ 21 октября 2011

Я пытаюсь по существу создать разделенное представление экрана, одну сетку удаленного репозитория, полную продуктов, а другую вместе с ней, показывающую локальный репозиторий в сетке.Я отдам должное, если вы скажете мне, как просто включить удаленный источник в сетку ... Я думаю, что я мог бы справиться с этим даже оттуда.Пожалуйста, будьте внимательны, я не очень хочу слышать, как настроить мои ресурсы в config.xml, я уже могу сделать это с удаленной базой данных, я просто не могу загрузить объекты / коллекции из нее.

Спасибо, ребята.

1 Ответ

1 голос
/ 21 октября 2011

ОК. Итак, для тех из нас, кто пробовал что-то подобное, первое, что вы понимаете, это то, что когда вы хотите, чтобы в качестве источника в вашем модуле использовалось более одной базы данных ... вам действительно нужно 2 модулей для этого (кто-то вмешивается и поправляет меня, если я не прав).

Шаг 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'); 
    }
} 

In 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');
    }
} 

И In 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()."::");

... и эта модель по большей части должна функционировать так же, как ваша типичная модель продукта, за исключением того, что вы используете удаленную базу данных, приятного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...