Пользовательский модуль Magento для экспорта данных заказа во внешнюю базу данных - PullRequest
1 голос
/ 22 сентября 2011

Я создал специальный модуль в Magento, который мы будем использовать для передачи имени и информации о продукте во внешнюю базу данных.Эти переменные необходимо передать во внешнюю базу данных после отправки заказа.Вот что у меня есть (три файла):

Это файл config.xml, который находится в следующем каталоге: app / code / local / Companyname / Modhere / etc /

<?xml version="1.0"?>
<config>
  <global>
    <models>
        <Companyname_Modhere>
             <class>Exp_Data_Model</class>
        </Companyname_Modhere>
    </models>
    <events>
      <sales_order_payment_pay>
        <observers>
          <companyname_modhere_observer>
            <type>singleton</type>
            <class>Exp_Data_Model_Order_Observer</class>
            <method>external_notification_trigger</method>
          </companyname_modhere_observer>
        </observers>
      </sales_order_payment_pay>     
    </events>
  </global>
</config>

Это файл Companyname_Modhere.xml, который находится в следующем каталоге: app / etc / modules /

<?xml version="1.0"?>
<config>
  <modules>
    <Companyname_Modhere>
      <codePool>local</codePool>
      <active>true</active>
    </Companyname_Modhere>
  </modules>
</config>

Это файл Observer.php, и у меня возникли проблемы,Он находится в следующем каталоге: app / code / local / Companyname / Modhere / Model /

<?php
class Exp_Data_Model_Order_Observer
{
    public function __construct()
    {
    }

     public function external_notification_trigger($observer)
    {

    $orderId = $observer->getPayment()->getOrder()->getId();
    $orderNumber = $observer->getPayment()->getOrder()->getIncrementId();

     return $this;
     }
}

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

Ответы [ 2 ]

4 голосов
/ 22 сентября 2011

Я очистил твой пример для тебя.Вам не хватало элемента 'version', и имена классов не совпадали с именем модуля.Это по-прежнему не на 100%, но оно должно приблизить вас и, надеюсь, решить проблему наблюдателя, с которой вы столкнулись.

/ app / etc / modules / Companyname_Modhere.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Companyname_Modhere>
            <codePool>local</codePool>
            <active>true</active>
            <depends>
                <Mage_Core />
                <Mage_Sales />
            </depends>
        </Companyname_Modhere>
    </modules>
</config>

/app/code/local/Companyname/Modhere/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <version>1.0.0</version>
    </modules>
    <global>
        <models>
            <Companyname_Modhere>
                <class>Companyname_Modhere_Model</class>
            </Companyname_Modhere>
        </models>
        <events>
            <sales_order_payment_pay>
                <observers>
                    <Companyname_Modhere>
                        <type>singleton</type>
                        <class>Companyname_Modhere/Observer</class>
                        <method>orderPaid</method>
                    </Companyname_Modhere>
                </observers>
            </sales_order_payment_pay>     
        </events>
    </global>
</config>

/ app / code / local / Companyname / Modhere / Model / Observer.php

<?php
class Companyname_Modhere_Model_Observer
{
    public function orderPaid(Varien_Event_Observer $observer)
    {
        $order = $observer->getPayment()->getOrder();

        $data = array();
        $data['id'] = $order->getIncrementId();
        $data['first_name'] = $order->getCustomerFirstname();
        $data['last_name'] = $order->getCustomerLastname();
        $data['items'] = array();
        foreach ($order->getAllItems() as $orderItem) {
            $item = array();

            $item['sku'] = $orderItem->getSku();
            $item['qty'] = $orderItem->getQtyOrdered();

            $data['items'][] = $item;
        }

        // TODO: Do something with your data array
    }
}
0 голосов
/ 10 декабря 2013

Вы можете экспортировать его в файл .txt / csv / xml / php и получить его оттуда вместе с вашей базой данных.

Примерно так:

    // choose correct path
    $path = $_SERVER['DOCUMENT_ROOT'] . '/magento/folder/orders/';
    if (!is_dir($path)) {

        mkdir($path);
    }

    // create filename
    $orderId = Mage::getSingleton('checkout/type_onepage')
        ->getCheckout()->getLastOrderId();
    $order = Mage::getModel('sales/order')->load($orderId);
    $orderNo = $order->getIncrementId();

    // format 20090403_141048_order_100000007_7.xml
    $filename = date('Ymd_His') . '_order_' . $orderNo . '_' . $orderId . '.txt';

    // create content
    $content = 'content here....'; // create TXT Data here

    // write file to server
    file_put_contents($path . $filename, $content);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...