現在、環境ごとに異なるモジュールをロードする方法はありますか?たとえば、開発環境にいるときのみAlanのCommerceBug拡張機能をロードしますか?
Magento 1と同様に、app / codeのモジュールファイルを.gitignoreできますが、gitを使用してapp / etc / config.phpへの変更を簡単に無視できません。
Magento \ Framework \ App \ DeploymentConfig \ Readerロードメソッドは、ある種のディープマージではなく、array_mergeのみを使用してファイルデータをマージし、同様の場合は例外をスローするため、env.phpで定義されたモジュールをロードすることはできないようですキーが見つかりました。
/**
* Loads the configuration file
*
* @param string $fileKey
* @return array
* @throws \Exception
*/
public function load($fileKey = null)
{
$path = $this->dirList->getPath(DirectoryList::CONFIG);
$fileDriver = $this->driverPool->getDriver(DriverPool::FILE);
$result = [];
if ($fileKey) {
$filePath = $path . '/' . $this->configFilePool->getPath($fileKey);
if ($fileDriver->isExists($filePath)) {
$result = include $filePath;
}
} else {
$configFiles = $this->configFilePool->getPaths();
$allFilesData = [];
$result = [];
foreach (array_keys($configFiles) as $fileKey) {
$configFile = $path . '/' . $this->configFilePool->getPath($fileKey);
if ($fileDriver->isExists($configFile)) {
$fileData = include $configFile;
} else {
continue;
}
$allFilesData[$configFile] = $fileData;
if (!empty($fileData)) {
$intersection = array_intersect_key($result, $fileData);
if (!empty($intersection)) {
$displayMessage = $this->findFilesWithKeys(array_keys($intersection), $allFilesData);
throw new \Exception(
"Key collision! The following keys occur in multiple config files:"
. PHP_EOL . $displayMessage
);
}
$result = array_merge($result, $fileData);
}
}
}
return $result ?: [];
}
https://github.com/magento/magento2/issues/7で@mzeisによって提起された非常に早いgithubの問題を発見しました。これは環境ごとの複数の構成について話しているが、これはクローズされています。
bin / magento module:enableおよびmodule:disableを呼び出すgitフックを実行することは可能ですが、これは本当に環境に依存する構成を実現するための非常に遠回りの方法のようです。