|
@@ -6,22 +6,53 @@ use Osinet\DemoBundle\Controller\DemoController;
|
|
|
use Symfony\Component\Config\FileLocator;
|
|
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
|
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
|
|
-use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
|
|
+use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
|
|
|
|
|
|
-class OsinetDemoExtension extends Extension {
|
|
|
+class OsinetDemoExtension extends ConfigurableExtension {
|
|
|
+
|
|
|
+ const ALIAS = 'osinet_demo';
|
|
|
+
|
|
|
+
|
|
|
+ const S_DEMO = self::ALIAS . '.democode';
|
|
|
|
|
|
|
|
|
- * Loads a specific configuration.
|
|
|
+ * Delegate configuration loading to a loader.
|
|
|
*
|
|
|
- * @throws \InvalidArgumentException When provided tag is not defined in this extension
|
|
|
+ * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
|
|
|
*/
|
|
|
- public function load(array $configs, ContainerBuilder $container) {
|
|
|
+ protected function doLoad(ContainerBuilder $container) {
|
|
|
$loader = new YamlFileLoader(
|
|
|
$container,
|
|
|
new FileLocator(__DIR__ . '/../Resources/config')
|
|
|
);
|
|
|
$loader->load('services.yml');
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ protected function loadInternal(array $mergedConfig, ContainerBuilder $container) {
|
|
|
+ $this->doLoad($container);
|
|
|
+ $this->override($mergedConfig, $container);
|
|
|
+ $this->hintAnnotations();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Apply the "friendly" configuration to override the bundle.
|
|
|
+ *
|
|
|
+ * @param array $mergedConfig
|
|
|
+ * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
|
|
|
+ */
|
|
|
+ protected function override(array $mergedConfig, ContainerBuilder $container) {
|
|
|
+ $def = $container->getDefinition(static::S_DEMO);
|
|
|
+ $overridden = '$codeMessage';
|
|
|
+ $def->replaceArgument($overridden, $mergedConfig['prefix'] . ' ' . $def->getArgument($overridden));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Help build a faster container by specifying whence to parse annotations.
|
|
|
+ */
|
|
|
+ protected function hintAnnotations() {
|
|
|
$this->addAnnotatedClassesToCompile([
|
|
|
DemoController::class,
|
|
|
]);
|