我正在致力于自动化 Magento(1.7.0.2 社区)商店的部署。为此,我有一个包含完整代码库的 Git 存储库,包括所有已安装的模块。
install.php
我在部署时针对空数据库运行基于命令行的安装程序 ( )。但显然,模块的 SQL 更新脚本在安装程序完全完成之前正在运行,这会导致问题:
有一个(自定义)脚本可以创建一个新的(adminhtml)用户角色,而且这个角色似乎是在 Magento 自己的Administrators
角色之前创建的。这还不错,但是最初的管理员用户是作为我们自定义角色的一部分创建的——而不是管理员!parent_id = 1
(我怀疑安装程序只是在创建用户时使用类似的东西,1
通常是管理员组,但在这种情况下,它是我们的自定义组。)
所以,我的问题是:如何在安装程序运行时不执行升级脚本(并让它在第一页加载时运行),或者告诉安装程序仅在初始用户和角色设置完成了吗?还是您看到完全不同的解决方案?
万一这很有用:这就是我们的升级脚本的基本功能:
<?php
$roleData = array(
'role_name' => 'My_Shiny_Role',
'role_type' => 'G',
);
$role = Mage::getModel('admin/role')->setData($roleData)->save();
$resources[0] = '__root__';
Mage::getModel("admin/rules")
->setRoleId($role->getId())
->setResources($resources)
->saveRel();
(它没有封装在一个类中,只是简单的 PHP。)