Magento: невозможно установить значение по умолчанию для атрибута пользовательского заказа, используя скрипт установки - PullRequest
0 голосов
/ 30 сентября 2011

Я добавил пользовательский атрибут к заказам, используя mysql4-install-1.0.0.php в моем модуле:

$installer = $this;
$installer->startSetup();

$installer->addAttribute('order', 'custom_status',  array(
    'type'          => 'varchar',
    'label'         => 'My Status',
    'note'          => '',
    'default'       => "my_default_value",
    'visible'       => false,
    'required'      => false,
    'user_defined'  => false,
    'searchable'    => false,
    'filterable'    => false,
    'comparable'    => false,
    'unique'        => false
));

Это работает - когда я смотрю на sales_flat_order таблица, я вижу новое поле varchar * custom_status * в таблице.Но значение по умолчанию NULL вместо "my_default_value", как и ожидалось.Есть идеи, почему?

PS.Сценарий установки действительно выполняется, я каждый раз сбрасываю все в исходное состояние.

UPD. config.xml

<resources>
        <mymodule_setup>
            <setup>
                <module>Company_Mymodule</module>
                <class>Mage_Sales_Model_Mysql4_Setup</class>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </mymodule_setup>
 ***

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

Модуль продаж Magento имеет псевдоэмуляцию старой функциональности EAV.Для создания столбца в базе данных требуется только свойство type из вашего массива.Также он использует свойство «grid» для определения того, требуется ли сделать тот же столбец в таблице представления сетки.

Кстати, предыдущий модуль продаж, основанный на EAV, также не использовал настройки по умолчанию, метки, обязательных и других свойств.Если вы хотите установить значение по умолчанию для этого атрибута, вам нужно создать наблюдатель для заказа перед сохранением события и установить в нем эти данные, если поле пустое.

2 голосов
/ 30 сентября 2011

Убедитесь, что это есть в вашем config.xml:

        <resources>
            <customattr_setup>
                <setup>
                    <module>Yourcompany_ModuleName</module>
                    <class>Mage_Sales_Model_Mysql4_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </customattr_setup>
        </resources>

<class>Mage_Sales_Model_Mysql4_Setup</class> чрезвычайно важно!

Затем в сценарии установки mysql4-install-0.1.0.php:

<?php
$installer = $this;
$installer->startSetup();

$installer->addAttribute(
    'order', 
    'customattr', 
    array(
        'type' => 'float', // or whatever you want here...
        'grid' => false
    )
);
$installer->endSetup();
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...