dev-patch-strategy
dev-patch-strategyMagento Config Extension
OSL-3.0
The Requires
2.x-dev
2.9999999.9999999.9999999-devMagento Config Extension
OSL-3.0
1.x-dev
1.9999999.9999999.9999999-devMagento Config Extension
OSL-3.0
Magento Config Extension
Magento 1.x extension that improves config system., (*2)
Indeed, Magento configuration is driven by database. This, sometimes, is overkill and forces us to maintain upgrade scripts to keep Magento envorinment aligned with features development., (*3)
To use the version greater or equal than 3.*
of this extension you need to have the Magento core itself managed by Composer using the Aydin Hassan's magento-core-composer-installer and a magento-core
package like the Bragento's magento/core
., (*4)
Indeed the version greater or equal than 3.*
of this extension uses the Cameron Eagans's composer-patches to apply a patch to the Mage_Core_Model_Config
to allow configuration override., (*5)
If not already installed, add to your project the Magento Composer Installer, and then add the webgriffe/config-extension
and the cweagans/composer-patches
packages to your dependencies:, (*6)
composer require --no-update webgriffe/config-extension composer require --no-update cweagans/composer-patches
Then you need to add an extra
configuration to your composer.json
file with the patch configuration:, (*7)
"extra": { "patches": { "magento/core": { "Config model patch to allow override": "https://raw.githubusercontent.com/webgriffe/config-extension/master/config-model.patch" } }, "composer-exit-on-patch-failure": true }
If you have a different package as Magento core you have to use its name in the patches
section., (*8)
Moreover you have to remove the magento/core
package from the filesystem so the package is re-installed and then patched., (*9)
rm -rf vendor/magento/core
Finally, you can install the extension:, (*10)
composer update webgriffe/config-extension cweagans/composer-patches
Composer should output something like the following during the installation:, (*11)
- Applying patches for magento/core vendor/webgriffe/config-extension/config-model.patch (Config model patch to allow override) - MagentoCoreInstaller: Installing: "magento/core" version: "1.9.3.7" to: "magento"
Now you should have the extension succesfully installed and the Mage_Core_Model_Config
patched, look at the app/code/core/Mage/Core/Model/Config.php
to confirm that it's patched (you should see a patch comment on the class heading)., (*12)
If you cannot manage the Magento core with Composer you have to use the version 2.*
of this extension but you'll miss the latest features and the installation steps are different and are described on the README.md
of the 2.x
branch., (*13)
So, this extension enables additional config file that overrides database configuration. The file must be at path app/etc/config-override.xml.dist
. For example:, (*14)
<?xml version="1.0"?> <config> <default> <general> <locale> <code>en_US</code> </locale> </general> </default> <stores> <it_it> <general> <locale> <code>it_IT</code> </locale> </general> </it_it> </stores> </config>
The extension tries also to load the non-dist file at app/etc/config-override.xml
which, if present, extends the app/etc/config-override.xml.dist
. In this way you can put the app/etc/config-override.xml.dist
file under version control to share that configuration with others but ignore the app/etc/config-override.xml
to have it only on your machine., (*15)
You can set different config based on current environment by defining several environment config files that must be placed in app/etc
and must be named with the pattern config-override-{env}.xml.dist
where {env}
is the current environment (for example config-override-dev.xml
for dev
environment or config-override-prod.xml.dist
for prod
environment). Environment specific config ovverrides app/etc/config-override.xml.dist
config explained above. To specify the current environment you must set the environment variable MAGE_ENVIRONMENT
. For example in Apache virtual host configuration or in the .htaccess
file you can do:, (*16)
SetEnv MAGE_ENVIRONMENT "dev"
Even with environment specific configuration you can use dist and non-dist files. So you can have config-override-dev.xml.dist
which can be extended by config-override-dev.xml
., (*17)
This extension also allows to load the local.xml.phpunit
file of the EcomDev_PHPUnit testing module. To enable this feature the MAGE_LOAD_ECOMDEV_PHPUNIT_CONFIG
environment variable must be set to 1
.
Then using a library like CgiHttpKernel you can do full acceptance (or functional testing) on a test-dedicated database (which is also used by other EcomDev_PHPUnit's tests). Have a look at Webgriffe's Functional Test Trait for more information., (*18)
Overridden config values are shown in Magento's backend. Every config setting it's shown on its section. For example, if you have the following config-override.xml
file:, (*19)
<?xml version="1.0"?> <config> <default> <design> <package> <name>my-package-name</name> </package> </design> </default> </config>
When you'll go to System -> Configuration -> General -> Design
you'll find the overridden config value shown and not editable., (*20)
, (*21)
This feature improves a lot the usability of this extension., (*22)
Magento Config Extension
OSL-3.0
Magento Config Extension
OSL-3.0
Magento Config Extension
OSL-3.0