我正在编写一个 Magento 扩展,但我无法让它显示在核心资源表中。我相信我正确地声明了我的配置的资源部分。为什么我的扩展在资源表中不可见?
<?xml version="1.0"?>
<config>
<modules>
<CTRL_Analytics>
<version>0.2.0</version>
</CTRL_Analytics>
</modules>
<global>
<blocks>
<analytics>
<class>CTRL_Analytics_Block</class>
</analytics>
</blocks>
<helpers>
<analytics>
<class>CTRL_Analytics_Helper</class>
</analytics>
</helpers>
<resources>
<analytics_setup>
<setup>
<module>CTRL_Analytics</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</analytics_setup>
<analytics_write>
<connection>
<use>core_write</use>
</connection>
</analytics_write>
<analytics_read>
<connection>
<use>core_read</use>
</connection>
</analytics_read>
</resources>
</global>
<adminhtml>
<menu>
<analytics translate="title" module="analytics">
<title>Marketing and Analytics</title>
<sort_order>100</sort_order>
<action>analytics/admin</action>
</analytics>
</menu>
</adminhtml>
<frontend>
<routers>
<CTRL_Analytics>
<use>standard</use>
<args>
<module>CTRL_Analytics</module>
<frontName>analytics</frontName>
</args>
</CTRL_Analytics>
</routers>
</frontend>
</config>
查看 XML,您正在命名安装程序文件
"mysql4-install-0.1.0.php",
但是您的起始模块版本是
"<version>0.2.0</version>"
尝试将您的起始版本更改为
"<version>0.1.0</version>"
或将安装程序文件更改为
"mysql4-install-0.2.0.php".
这些文件版本号来自您的模块版本号。
我总是将退出或异常放入任何新的安装程序文件中,以确保 PHP 正在尝试加载该文件。仅在成功执行该文件后,信息才会写入 core_resource 表,退出或异常将阻止该写入。这允许您重新加载页面并让安装程序一次又一次运行,直到正确为止。
我遇到了同样的问题,花了我一周的时间(或者让我损失了一周!!!)来找出原因,而且非常简单。
检查文件和文件夹权限。它们可能受到限制,将新扩展的文件和目录更改为读写,它将立即起作用。毕竟和缓存没有任何关系!!!
首先(我确定您已经这样做了),清除并禁用所有缓存。
其次,检查您是否能够访问块和助手。如果没有,可能是你的
app\etc\modules\CTRL_Analytics.xml
有问题。该模块是否显示在管理中的“系统”>“配置”>“高级”下?
第三,您的
sql\analytics_setup\mysql4-install-0.1.0.php
和 sql\analytics_setup\mysql4-upgrade-0.1.0-0.2.0.php
的命名和编码是否正确。我发现 mysql 升级命名约定过去曾困扰过很多人。
最后,尝试将服务器置于调试状态并在
mysql4-install-0.1.0.php
内设置断点以检查文件是否真正被执行。它可能会尝试运行,但会因 SQL 错误而默默失败(讨厌这样!)。
希望其中之一有帮助! 京东