Я хочу добавить атрибут для заказа, который не будет виден клиенту. Я просто хочу использовать его в базе данных и хранить определенное значение для каждого заказа. Я хочу напечатать заказ в соответствии с этим значением. Итак, как я могу добавить атрибут заказа в magento. Атрибут - это как статус порядка. Далее, если я хочу показать этот атрибут в admin/sales/orders, как я могу это сделать?
Добавление нового атрибута на заказ в magento
Ответ 1
Предполагая, что вы хотите добавить my_custom_input_field
в свой заказ и добавить поле на страницу создания вашего администратора, чтобы добавить поле в интерфейс, вам просто нужно добавить поле ввода в передний шаблон и дважды проверить наблюдателя )
В/app/code/local/MageIgniter/CustomOrderStatus/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<MageIgniter_CustomOrderStatus>
<version>1.1</version>
</MageIgniter_CustomOrderStatus>
</modules>
<global>
<fieldsets>
<sales_convert_quote>
<my_custom_input_field><to_order>*</to_order></my_custom_input_field>
</sales_convert_quote>
<sales_convert_order>
<my_custom_input_field><to_quote>*</to_quote></my_custom_input_field>
</sales_convert_order>
</fieldsets>
<helpers>
<customorderstatus>
<class>MageIgniter_CustomOrderStatus_Helper</class>
</customorderstatus>
</helpers>
<models>
<customorderstatus>
<class>MageIgniter_CustomOrderStatus_Model</class>
<resourceModel>customorderstatus_mysql4</resourceModel>
</customorderstatus>
</models>
<resources>
<customorderstatus_setup>
<setup>
<module>MageIgniter_CustomOrderStatus</module>
<class>Mage_Sales_Model_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</customorderstatus_setup>
<customorderstatus_write>
<connection>
<use>core_write</use>
</connection>
</customorderstatus_write>
<customorderstatus_read>
<connection>
<use>core_read</use>
</connection>
</customorderstatus_read>
</resources>
<events>
<adminhtml_sales_order_create_process_data_before>
<observers>
<customorderstatus>
<type>singleton</type>
<class>customorderstatus/observer</class>
<method>saveCustomData</method>
</customorderstatus>
</observers>
</adminhtml_sales_order_create_process_data_before>
</events>
<blocks>
<customorderstatus>
<class>MageIgniter_CustomOrderStatus_Block</class>
</customorderstatus>
</blocks>
</global>
</config>
В/app/code/local/MageIgniter/CustomOrderStatus/sql/customorderstatus_setup/mysql4-install-1.1.php
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute("order", "my_custom_input_field", array("type"=>"varchar"));
$installer->addAttribute("quote", "my_custom_input_field", array("type"=>"varchar"));
$installer->endSetup();
В/app/code/local/MageIgniter/CustomOrderStatus/Model/Observer.php
class MageIgniter_CustomOrderStatus_Model_Observer
{
public function saveCustomData($event)
{
$quote = $event->getSession()->getQuote();
$quote->setData('my_custom_input_field', $event->getRequestModel()->getPost('my_custom_input_field'));
return $this;
}
}
(Вы должны избегать внесения изменений в основное значение по умолчанию - вы должны провести некоторое исследование по этому пути)
В/app/design/adminhtml/default/default/template/sales/order/view/info.phtml
<?php if($_order->getMyCustomInputField()): ?>
<tr>
<td class="label"><label><?php echo Mage::helper('sales')->__('My Custom Input Field') ?></label></td>
<td class="value"><strong><?php echo $_order->getMyCustomInputField() ?></strong></td>
</tr>
<?php endif; ?>
В/app/design/adminhtml/default/default/template/sales/order/create/form/account.phtml
(чтобы добавить к интерфейсу изменение value="<?php echo Mage...>"
)
<input id="my_custom_input_field" name="my_custom_input_field" value="<?php echo Mage::getSingleton('adminhtml/session_quote')->getQuote()->getMyCustomInputField() ?>" class="input-text" type="text">
Ответ 2
Добавление пользовательских атрибутов к заказу включает в себя несколько шагов. Сначала вам нужно добавить текстовое поле в файл billing.phtml
. Затем вы должны добавить это поле в таблицы Quote и Order и создать классы Observer. Для отображения этого атрибута необходимо отредактировать еще несколько файлов, таких как custom.xml
и order.phtml
.