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 です。)