Gibt es derzeit eine Möglichkeit, verschiedene Module pro Umgebung zu laden, z. B. die CommerceBug-Erweiterung von Alan nur zu laden, wenn ich mich in meiner Entwicklungsumgebung befinde?
Wie in Magento 1 kann ich die Moduldateien in app / code .gitignore, aber ich kann Änderungen an app / etc / config.php nicht einfach über git ignorieren.
Es scheint nicht möglich zu sein, Module zu laden, die in Ihrer env.php als Magento \ Framework \ App \ DeploymentConfig \ Reader definiert sind. Die Lademethode verwendet nur array_merge anstelle einer tiefen Zusammenführung, um die Dateidaten zusammenzuführen, und löst eine Ausnahme aus, wenn dies ähnlich ist Schlüssel gefunden.
/**
* 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 ?: [];
}
Ich habe ein sehr frühes Github-Problem gefunden, das von @mzeis unter https://github.com/magento/magento2/issues/7 angesprochen wurde und das sich mit mehreren Konfigurationen pro Umgebung befasst, das jedoch geschlossen wurde.
Es wäre möglich, einige Git-Hooks durchzuführen, die bin / magento module: enable und module: disable aufrufen, aber dies scheint ein sehr umständlicher Weg zu sein, um eine wirklich umgebungsabhängige Konfiguration zu erreichen.