Сценарий установки модуля не выполняется
Я пробовал много способов сделать это, но не выполняется.
App/code/local/Devra/Address/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Devra_Address>
<version>0.1.0</version>
</Devra_Address>
</modules>
<global>
<models>
<address>
<class>Devra_Address_Model</class>
<resourceModel>address_mysql4</resourceModel>
</address>
<address_mysql4>
<class>Devra_Address_Model_Mysql4</class>
<entities>
<address>
<table>address</table>
</address>
</entities>
</address_mysql4>
</models>
<resources>
<address_setup>
<setup>
<module>Devra_Address</module>
<class>Mage_Customer_Model_Resource_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</address_setup>
<address_write>
<connection>
<use>core_write</use>
</connection>
</address_write>
<address_read>
<connection>
<use>core_read</use>
</connection>
</address_read>
</resources>
<blocks>
<address>
<class>Devra_Address_Block</class>
</address>
</blocks>
<helpers>
<address>
<class>Devra_Address_Helper</class>
</address>
</helpers>
<fieldsets>
<sales_convert_quote_address>
<street_new>
<to_order_address>*</to_order_address>
</street_new>
<street_number>
<to_order_address>*</to_order_address>
</street_number>
<rut>
<to_order_address>*</to_order_address>
</rut>
<dpto_off>
<to_order_address>*</to_order_address>
</dpto_off>
</sales_convert_quote_address>
<customer_address>
<street_new>
<to_quote_address>*</to_quote_address>
</street_new>
<street_number>
<to_quote_address>*</to_quote_address>
</street_number>
<rut>
<to_quote_address>*</to_quote_address>
</rut>
<dpto_off>
<to_quote_address>*</to_quote_address>
</dpto_off>
</customer_address>
</fieldsets>
</global>
</config>
App/code/local/Devra/Address/sql/address_setup/mysql4-install-0.1.0.php
<?php
$installer = $this;
$installer->startSetup();
$setup = $this;
$entityTypeId = $setup->getEntityTypeId('customer_address');
$attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
//this is for creating a new attribute for customer address entity
$setup->addAttribute('customer_address', 'street_new', array(
'type' => 'varchar',
'input' => 'text',
'label' => 'Calle',
'global' => 1,
'visible' => true,
'required' => true,
'user_defined' => 1,
'visible_on_front' => 1,
'backend' => '',
'source' => '',
'default' => '',
'frontend' => '',
'unique' => false
));
$setup->addAttribute('customer_address', 'rut', array(
'type' => 'varchar',
'input' => 'text',
'label' => 'RUT',
'global' => 1,
'visible' => 1,
'required' => 1,
'user_defined' => 1,
'visible_on_front' => 1,
'backend' => '',
'source' => '',
'default' => '',
'frontend' => '',
'unique' => false
));
$setup->addAttribute('customer_address', 'street_number', array(
'type' => 'int',
'input' => 'text',
'label' => 'Numeración',
'global' => 1,
'visible' => 1,
'required' => 1,
'user_defined' => 1,
'visible_on_front' => 1,
'backend' => '',
'source' => '',
'default' => '',
'frontend' => '',
'unique' => false
));
$setup->addAttribute('customer_address', 'dpto_off', array(
'type' => 'varchar',
'input' => 'text',
'label' => 'Depto/Oficina',
'global' => 1,
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'visible_on_front' => 1,
'backend' => '',
'source' => '',
'default' => '',
'frontend' => '',
'unique' => false
));
Mage::getSingleton('eav/config')
->getAttribute('customer_address', 'street_new')
->setData('used_in_forms', array('customer_register_address','customer_address_edit','adminhtml_customer_address'))
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
->save();
Mage::getSingleton('eav/config')
->getAttribute('customer_address', 'street_number')
->setData('used_in_forms', array('customer_register_address','customer_address_edit','adminhtml_customer_address'))
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
->save();
Mage::getSingleton('eav/config')
->getAttribute('customer_address', 'dpto_off')
->setData('used_in_forms', array('customer_register_address','customer_address_edit','adminhtml_customer_address'))
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
->save();
Mage::getSingleton('eav/config')
->getAttribute('customer_address', 'rut')
->setData('used_in_forms', array('customer_register_address','customer_address_edit','adminhtml_customer_address'))
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
->save();
$setup->addAttributeToGroup(
$entityTypeId, $attributeSetId, $attributeGroupId, 'street_new', '995' //sort_order
);
$setup->addAttributeToGroup(
$entityTypeId, $attributeSetId, $attributeGroupId, 'street_number', '996' //sort_order
);
$setup->addAttributeToGroup(
$entityTypeId, $attributeSetId, $attributeGroupId, 'dpto_off', '997' //sort_order
);
$setup->addAttributeToGroup(
$entityTypeId, $attributeSetId, $attributeGroupId, 'rut', '998' //sort_order
);
/**
* Adding Extra Column to sales_flat_quote_address
* to store the delivery instruction field
*/
$sales_quote_address = $installer->getTable('sales/quote_address');
$installer->getConnection()
->addColumn($sales_quote_address, 'street_new', array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'comment' => 'New Street field'
));
$installer->getConnection()
->addColumn($sales_quote_address, 'street_number', array(
'type' => Varien_Db_Ddl_Table::TYPE_INT,
'comment' => 'New Street number field'
));
$installer->getConnection()
->addColumn($sales_quote_address, 'dpto_off', array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'comment' => 'New Dpto field'
));
$installer->getConnection()
->addColumn($sales_quote_address, 'rut', array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'comment' => 'New RUT field'
));
/**
* Adding Extra Column to sales_flat_order_address
* to store the delivery instruction field
*/
$sales_order_address = $installer->getTable('sales/order_address');
$installer->getConnection()
->addColumn($sales_order_address, 'street_new', array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'comment' => 'New Street field'
));
$installer->getConnection()
->addColumn($sales_order_address, 'street_number', array(
'type' => Varien_Db_Ddl_Table::TYPE_INT,
'comment' => 'New Street number field'
));
$installer->getConnection()
->addColumn($sales_order_address, 'dpto_off', array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'comment' => 'New Dpto field'
));
$installer->getConnection()
->addColumn($sales_order_address, 'rut', array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'comment' => 'New RUT field'
));
$config = Mage::getModel('core/config');
//append delivery instruction to address templates in system configuration
$html = Mage::getConfig()->getNode('default/customer/address_templates/html');
$html .= '{{depend street_new}}<br/>Calle: {{var street_new}} {{/depend}}';
$html .= '{{depend street_number}}<br/>Numeración: {{var street_number}} {{/depend}}';
$html .= '{{depend dpto_off}}<br/>Dpto/Oficina: {{var dpto_off}} {{/depend}}';
$html .= '{{depend rut}}<br/>RUT: {{var rut}} {{/depend}}';
$config->saveConfig('customer/address_templates/html', $html);
$text = Mage::getConfig()->getNode('default/customer/address_templates/text');
$text .= '{{depend street_new}}<br/>Calle: {{var street_new}} {{/depend}}';
$text .= '{{depend street_number}}<br/>Numeración: {{var street_number}} {{/depend}}';
$text .= '{{depend dpto_off}}<br/>Dpto/Oficina: {{var dpto_off}} {{/depend}}';
$text .= '{{depend rut}}<br/>RUT: {{var rut}} {{/depend}}';
$config->saveConfig('customer/address_templates/text', $text);
$oneline = Mage::getConfig()->getNode('default/customer/address_templates/oneline');
$oneline .= '{{depend street_new}}<br/>Calle: {{var street_new}} {{/depend}}';
$oneline .= '{{depend street_number}}<br/>Numeración: {{var street_number}} {{/depend}}';
$oneline .= '{{depend dpto_off}}<br/>Dpto/Oficina: {{var dpto_off}} {{/depend}}';
$oneline .= '{{depend rut}}<br/>RUT: {{var rut}} {{/depend}}';
$config->saveConfig('customer/address_templates/oneline', $oneline);
$pdf = Mage::getConfig()->getNode('default/customer/address_templates/pdf');
$pdf .= '{{depend street_new}}<br/>Calle: {{var street_new}} {{/depend}}';
$pdf .= '{{depend street_number}}<br/>Numeración: {{var street_number}} {{/depend}}';
$pdf .= '{{depend dpto_off}}<br/>Dpto/Oficina: {{var dpto_off}} {{/depend}}';
$pdf .= '{{depend rut}}<br/>RUT: {{var rut}} {{/depend}}';
$config->saveConfig('customer/address_templates/pdf', $pdf);
$js_template = Mage::getConfig()->getNode('default/customer/address_templates/js_template');
$js_template .= '{{depend street_new}}<br/>Calle: {{var street_new}} {{/depend}}';
$js_template .= '{{depend street_number}}<br/>Numeración: {{var street_number}} {{/depend}}';
$js_template .= '{{depend dpto_off}}<br/>Dpto/Oficina: {{var dpto_off}} {{/depend}}';
$js_template .= '{{depend rut}}<br/>RUT: {{var rut}} {{/depend}}';
$config->saveConfig('customer/address_templates/js_template', $js_template);
$installer->endSetup();
Кроме того, это результат для core_resources
:
select * from core_resource where code like '%address%';
Empty set (0.00 sec)
Я также очистил кэш, поэтому не знаю, что делать.
1 answers
Доступен ли ваш модуль в бэкэнде "система > конфигурация > дополнительно". Если он недоступен, проверьте папку /etc/modules, вы должны были создать и"Devra_Address.xml "файл здесь.
Иногда Magento не удается запустить сценарий установки (кэширование, ошибки,...) Очень полезным инструментом в подобных ситуациях является n98-magerun. n98-magerun - это набор команд командной строки, которые помогут вам в разработке и обслуживании Magento. В нем есть скрипт для принудительного запуска программы установки, чтобы вы могли посмотрите, доступен ли ваш и может ли Magento запустить ваш скрипт.
Вы можете просто установить его в свою папку оболочки:
cd shell
И выполнить
wget https://files.magerun.net/n98-magerun.phar
После этого вы можете принудительно выполнить инкрементную настройку модулей:
php n98-magerun.phar sys:setup:incremental
Вы должны увидеть, что для установки требуется (минимум) 1 скрипт, и если вы нажмете Enter, он должен быть установлен. Если вы не видите свой сценарий, значит, что-то не так с вашим config.xml файл.