Пользовательское поле заказа Magento и база данных Magento - PullRequest
2 голосов
/ 12 ноября 2010

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

Во-первых, мне нужно добавить поле в «таблицу заказов», в котором сохраняется идентификатор дилера для конкретного заказа, а во-вторых, мне нужно, чтобы magento взял это поле из формы и вставил его.Как мне делать эти вещи?В основном, в какой таблице magento будет храниться этот дилер, и какие файлы я изменю, чтобы на самом деле иметь доступ к magento и вставить это значение поля?

Примечание. Я использую только одностраничный метод оформления заказа.

1 Ответ

4 голосов
/ 13 ноября 2010

Прежде всего, ознакомьтесь с механизмом обновления magento SQL (он отличается, когда вы работаете с EAV - как таблицы клиентов - и обычные таблицы - как заказы).Создайте модуль, который будет иметь скрипт sql-update, например, в /YourNamespace/YourModule/sql/yourmodule_setup/mysql4-install-1.0.0.php.Вы должны использовать что-то вроде:

$installer = $this;
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'dealerid', 'decimal(12,4) NULL');

и в вашем config.xml:

<global>
(...)
       <models>
       (...)
           <yourmodule>
               <class>Mage_Sales_Model</class>
               <resourceModel>yourmodule_mysql4</resourceModel>
           </yourmodule>
           <yourmodule_mysql4>
               <class>YourNamespace_Yourmodule_Model_Mysql4</class>
               <entities>
                   <order><table>sales_order</table></order>
               </entities>
           (...)
           </yourmodule_mysql4>
       (...) 
       </models>
       <resources>
            <yourmodule_setup>
                <setup>
                    <module>YourNamespace_YourModule</module>
                    <class>YourNamespace_YourModule_Model_Mysql4_Setup</class>
                </setup>
            </yourmodule_setup>
        </resources>
(...)
</global>

Не забудьте создать свои собственные классы: YourNamespace_YourModule_Model_Mysql4_Setup, YourNamespace_Yourmodule_Model_Mysql4.Проверьте в app / code / core / Mage / Sales / как они должны выглядеть (ничего особенного там не нужно, они просто должны наследовать от соответствующих базовых классов).Также проверьте app / code / core / Mage / Sales / sql и app / code / core / Mage / Sales / etc / config.xml.

Если вы хотите получить поле из одностраничной проверки, вы должны сделать несколько вещей ... Я не знаю, что вам действительно нужно от пользователя (и в какой части проверки он собираетсябыть взятым).Добавление входных данных осуществляется с помощью шаблонов (отредактируйте нужные файлы в app / design / frontend / yourskin / default / template / checkout).

Чтобы получить правильные данные, вы должны переписать контроллер извлечения с вашим собственным действием контроллера (посмотрите app / code / core / Mage / Checkout / Controllers / OnepageController.php), чтобы получить данные из формы исохранить его в сеансе проверки.После этого вы должны подключиться к событию checkout_type_onepage_save_order_after (оно находится в приложении / code / core / Mage / Checkou / Model / Type / Onepage.php), взять данные из вашего сеанса и поместить их в модель заказа (и сохранить их вкурс).Это своего рода стандартная процедура, поэтому у вас не должно возникнуть проблем.

Возможно, вам также потребуется добавить столбец в sales_flat_order (структура таблиц заказов изменилась в 1.4.xx, поэтому я 'я не уверен в этом - вам придется провести некоторые эксперименты).

Если вы хотите увидеть его в представлении заказа adminhtml, вам придется переопределить некоторые Core / Adminhtml / Blocks / Sales / Order (и, вероятно, шаблоны).

Это своего рода комплекспроцедуру, так что вам придется выяснить некоторые вещи самостоятельно.Этот пост представляет собой общее представление о том, как это сделать.

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