Что предотвращает запуск установки в Magento 1.8?
-
16-10-2019 - |
Вопрос
Я пытаюсь создать простой модуль, чтобы добавить комментарии клиентов при оформлении заказа, я знаю, что на рынке есть несколько халява, которые уже делают это, но мне нужно дополнительно расширить функциональность, поэтому решил сделать это с нуля.
Проблема в том, что я даже не могу заставить свой сценарий установки для запуска и создания необходимых таблиц. Я пересматривал код часами, но не могу заставить его работать !!!
Любая помощь будет очень приветствована ...
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Namespace_CheckoutComments>
<version>0.1.0</version>
</Namespace_CheckoutComments>
</modules>
<global>
<resources>
<checkoutcomments_setup>
<setup>
<module>Namespace_CheckoutComments</module>
</setup>
</checkoutcomments_setup>
</resources>
<models>
<checkoutcomments>
<class>Namespace_CheckoutComments_Model</class>
<resourceModel>checkoutcomments_resource</resourceModel>
</checkoutcomments>
<checkoutcomments_resource>
<class>Namespace_CheckoutComments_Model_Resource</class>
<entities>
<comments_table>
<table>checkout_comments</table>
</comments_table>
</entities>
</checkoutcomments_resource>
</models>
</global>
</config>
sql/namespace_checkoutcomments_setup/install-0.1.0.php
<?php
/* @var $installer Mage_Core_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();
$table = $installer->getConnection()->newTable($installer->getTable('checkoutcomments/comments_table'))
->addColumn('comment_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
'identity' => true,
'unsigned' => true,
'nullable' => false,
'primary' => true,
), 'Comment ID')
->addColumn('order_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
'unsigned' => true,
'nullable' => false,
), 'Real Order ID')
->addColumn('comment', Varien_Db_Ddl_Table::TYPE_INTEGER, '64k', array(
), 'Comment')
->addForeignKey(
$installer->getFkName(
'checkoutcomments/comments_table',
'order_id',
'sales/order',
'entity_id'
),
'order_id', $installer->getTable('sales/order'), 'entity_id',
Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
->setComment('Checkout Comments');
$installer->getConnection()->createTable($table);
$installer->endSetup();
Я понятия не имею, что не так с моим сценарием установки или с моим config.xml. Что будет главной причиной этого не выполнять и не создавать требуемые таблицы?
+-------------------------+------------+--------------+
| code | version | data_version |
+-------------------------+------------+--------------+
| adminnotification_setup | 1.6.0.0 | 1.6.0.0 |
| admin_setup | 1.6.1.1 | 1.6.1.1 |
| api2_setup | 1.0.0.0 | 1.0.0.0 |
| api_setup | 1.6.0.1 | 1.6.0.1 |
| backup_setup | 1.6.0.0 | 1.6.0.0 |
| bundle_setup | 1.6.0.0.1 | 1.6.0.0.1 |
| captcha_setup | 1.7.0.0.0 | 1.7.0.0.0 |
| catalogindex_setup | 1.6.0.0 | 1.6.0.0 |
| cataloginventory_setup | 1.6.0.0.2 | 1.6.0.0.2 |
| catalogrule_setup | 1.6.0.3 | 1.6.0.3 |
| catalogsearch_setup | 1.6.0.0 | 1.6.0.0 |
| catalog_setup | 1.6.0.0.18 | 1.6.0.0.18 |
| checkoutcomments_setup | 0.0.1 | 0.0.1 |
| checkout_setup | 1.6.0.0 | 1.6.0.0 |
Решение
В вашем 3 -м столбце:
addColumn(
'comment',
Varien_Db_Ddl_Table::TYPE_INTEGER,
'64k',
array(),
'Comment'
)
у вас есть type_int
, похоже, вы ищете type_text
Как вы определяете его как поле комментариев с пределом персонажа 64K. Когда это не удастся, он не будет экземпляром таблицы должным образом или не сработает.
Другие советы
Обнаружил, что у моей папки namespace_checkoutcomments_setup
Когда это должно было быть checkoutcomments_setup
для моего сценария.