добавить пользовательский атрибут заказа к заказу в администраторе magento - PullRequest
1 голос
/ 21 ноября 2010

Я добавил пользовательский атрибут заказа и обновил страницу оформления одностраничного заказа.Сейчас я пытаюсь добавить этот атрибут в новую форму заказа в админке.Я пытаюсь расширить Mage_Adminhtml_Block_Sales_Order_Create_Form_Account и добавить новое поле в метод _prepareForm () аналогично тому, как добавляются поля Group и Email.

Как получить атрибут заказа?Я пробовал несколько способов, но ничего не работает.Вот как я создаю собственный атрибут заказа в файле mysql-install:

$attribute  = array(
        'type'          => 'int',
        'label'         => 'myattr',
        'visible'       => false,
        'required'      => false,
        'user_defined'  => false,
        'searchable'    => false,
        'filterable'    => false,
        'comparable'    => false,
);
$installer->addAttribute('order', 'myattr', $attribute);

, и вот как я пытаюсь получить атрибут:

$res = Mage::getSingleton('core/resource');
$eav = Mage::getModel('eav/config');
$attr = $eav->getAttribute('sales/order', 'myattr');

илис этим:

$entityType = Mage::getModel('eav/config')->getEntityType('order');
$entityTypeId = $entityType->getEntityTypeId();

$attribute = Mage::getResourceModel('eav/entity_attribute_collection')
                ->setCodeFilter('myattr')
                ->setEntityTypeFilter($entityTypeId)
                ->getFirstItem();

или с этим:

$order = Mage::getResourceSingleton('sales/order');
$myAttr = $order->getAttribute('myattr');

Ни один из них не работает.

Ответы [ 3 ]

0 голосов
/ 26 ноября 2010

Продажа / Заказ, используемый для использования модели EAV, которая поддерживает атрибуты, которые были до 1.4.0 или около того, не уверен.Я думаю, что теперь вы должны сделать:

$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'my_column', 'decimal(12,4)');

вы все еще можете добавить атрибут в качестве статического поля

$installer->addAttribute('order', 'my_column', array('type'=>'static'));
0 голосов
/ 09 июня 2011

Что я заметил после долгих проб и ошибок, так это то, что новый атрибут должен иметь значение по умолчанию (не нулевое), чтобы работать.Каким-то образом атрибут недоступен для записи, если он имеет значение NULL в базе данных.Поэтому использование этого массива опций атрибутов сработало для меня:

$attribute  = array(
'type'          => 'int',
'label'         => 'myattr',
'default'       => 0,
'visible'       => false,
'required'      => false,
'user_defined'  => true,
'searchable'    => false,
'filterable'    => false,
'comparable'    => false );
0 голосов
/ 21 ноября 2010

Проверено ли, что атрибут добавляется в таблицу eav_attribute в базе данных с правильным значением entity_type_id? (Я думаю, что sales_order равен 11 по умолчанию, но не думайте, что это так)

На первый взгляд похоже, что вы должны использовать

$installer->addAttribute('sales/order', 'myattr', $attribute);

НТН, JD

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