2017-11-21 4 views
1

Wenn wir ein Bündel 'MyBundle' mit Konsole in symfony erstellen, erzeugen sie Klasse MyBundleExtension.php innerhalb dieser Klasse haben wir eine Methode 'load' findenDependency Injection in Symfony

public function load(array $configs, ContainerBuilder $container) 
{ 
    $configuration = new Configuration(); 
    $config = $this->processConfiguration($configuration, $configs);  
    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); 
    $loader->load('services.yml'); 
} 

Wenn ich die parametre $ configs Dump Das Ergebnis ist ein leeres Array im Array

Woher wurde dieser Parameter injiziert und wie kann ich Werte für diesen Parameter hinzufügen?

Antwort

2

Als Mert Simsek erwähnt, können Sie Ihr Paket, indem Sie die Konfiguration in App konfigurieren/config/config.yml

Ihr Bündel hat einen Schlüssel, der diese Konfigurationen sammelt. Dieser Schlüssel ist standardmäßig erhalten, um die Paketnamen

\Symfony\Component\DependencyInjection\Extension\Extension::getAlias 

mit dieser Funktion verwenden, aber diese Funktion außer Kraft setzen kannst einen benutzerdefinierten Schlüssel in Ihrer Erweiterung zu definieren.

standardmäßig (aus dem doc von getAlias ​​Funktion) die Alias ​​wie diese

erstellt
* This convention is to remove the "Extension" postfix from the class 
* name and then lowercase and underscore the result 

so in Ihrem Fall ist nur "mein". Wenn Sie die Konfiguration zu diesem Bundle Ihre yml Config hinzufügen wollen, werden wie folgt aussehen:

my: 
    some_config: value 
    set_of_configs: 
     config1: value1 
     config2: value2 

Nachdem Sie dies tun in der Load-Methode $ configs finden Sie eine Reihe bekommen. Sie können die vordefinierte Klasse "Configuration" verwenden, um diese Konfiguration zu validieren. Sie können weitere Informationen über Bündelkonfiguration in der Symfony Doc finden Sie hier:

https://symfony.com/doc/current/components/config/definition.html

hoffe, das hilft,

Alexandru Cosoi

0

Sie sollten Variablen in app/config/config.yml Datei hinzufügen.