Magento добавление атрибута продукта в скрипт установки

1

Я хочу добавить атрибут к цене продукта в Magento с помощью скрипта установки. Это должно быть поле выбора, отображаемое в группе "Цены" и состоящее из двух значений: "Да" и "Нет". Но я столкнулся с проблемой: мой код не работает. Несмотря на долгое просматривание моего кода, проблема все еще не устранена. Не могли бы вы помочь мне в этом вопросе? Вот мой код:

Часть /../etc/config.xml

<module>
        <My_Module
            <version>1.0.0</version>
        </My_Module
    </module>
    <global>
        <models>
            <module>
                <class>My_Module_Model</class>
            </module>
        </models>
            <resources>              
                <module_setup>
                    <setup>
                        <module>My_Module</module>
                       <class>Mage_Catalog_Model_Resource_Setup</class>
                    </setup>
                    <connection>
                        <use>core_setup</use>
                    </connection>
                </module_setup>
                <module_write>
                    <connection>
                        <use>core_write</use>
                    </connection>
                </module_write>
                <module_read>
                    <connection>
                        <use>core_read</use>
                    </connection>
                </module_read>
            </resources>
    </global>

/../sql/mymodule_setup/mysql4-install-1.0.0.php

$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();


$setup->addAttribute("catalog_product", "price_offer",  array(
                    'group'         => 'Prices', 
                    'type'          => 'int',
                    'attribute_set' =>  'Price',
                    'backend'       => '',
                    'frontend'      => '',
                    'label'         => 'Allow Price Offer',
                    'input'         => 'select',
                    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
                    'backend'    => 'eav/entity_attribute_backend_array',
                    'visible'       => true,
                    'required'      => false,
                    'user_defined'  => true,
                    'default'       => '0',
                    'visible_on_front' => false,
                    'used_in_product_listing' => true,
                    'apply_to' => 'simple,configurable',
                    'sort_order'    => 10,
                    'is_configurable' => 1,
                    'option'     => array (
                        'values' => array(
                            0 => 'No',
                            1 => 'Yes',
                        )
                    ),

    ));

$installer->endSetup(); 

Наконец, здесь /etc/modules/My_Module.xml:

<config>
    <modules>
        <My_Module>
            <codePool>local</codePool>
            <active>true</active>
        </My_Module>
    </modules>
</config>

Надеюсь, ты поможешь мне с этой проблемой.

Теги:
attributes
magento
install

2 ответа

0

Ваш скрипт установки определенно не является проблемой, форматирование кода прост. Похоже, что это что-то с конфигурацией, которая вызывает вашу проблему. Вы имеете в виду, что скрипт установки не запущен, поэтому база данных не обновляется или не является значением в базе данных и не отображается на Magento?

Для вашего конфига, я думаю, вам нужен обработчик базы данных, поэтому вам нужна модель ресурса:

<module>
    <My_Module>
        <version>1.0.0</version>
    </My_Module>
</module>
<global>
    <models>
        <module>
            <class>My_Module_Model</class>
        </module>
    </models>
    <my>
        <class>My_Module_Model</class>
        <resourceModel>my_module_resource</resourceModel>
    </my>
    <my_module_resource>
        <class>my_module_Model_Mysql4</class>
    </my_module_resource>
        <resources>              
            <module_setup>
                <setup>
                    <module>My_Module</module>
                   <class>Mage_Catalog_Model_Resource_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </module_setup>
            <module_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </module_write>
            <module_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </module_read>
        </resources>
</global>

Не забудьте добавить модель ресурса в папку Model, если вы следуете этому коду.

  • 0
    Спасибо за вашу помощь @cleong, но я действительно не понимаю, зачем мне нужен этот обработчик ресурсов, в то время как мой модуль не создает новые таблицы и не работает с пользовательскими таблицами. Все, что мне нужно, это добавить новый атрибут по версии моего модуля и использовать продукты с этим.
  • 0
    Итак, ресурс - это просто обработчик базы данных для magento, если вы выполняете какую-либо работу с БД, вам нужен обработчик для подключения
Показать ещё 4 комментария
0

у вас есть ошибка в этом классе Mage_Eav_Model_Entity_Setup Use ($ installer - класс Mage_Catalog_Model_Resource_Setup)

$installer->addAttribute( ...);
  • 0
    Спасибо за Ваш ответ. Я изменил сценарий. Теперь это выглядит так: $ installer = $ this; $ Installer-> startSetup (); $ Installer-> AddAttribute (....); $ Installer-> endSetup (); Но, к сожалению, ваше решение не решило проблему. Мой модуль до сих пор даже не был записан в core_resource.
  • 0
    Извлеките addAttribute из вашего установочного скрипта и посмотрите, записывается ли он в таблицу 'core_resource'. После запуска сценария установки должна быть строка с 'module_setup 1.0.0 1.0.0' в core_resource. Если нет, то ваш модуль настроен неправильно. Проверьте ваш config.xml.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню