Config des Plugins auslesen in build() - Methode

Hallo,

Ich versuche die Plugin-Config auszulesen, um die Werte dem Container zur Verfügung zu stellen. Ich benötige diese Werte in der sevices.xml.

public function build(ContainerBuilder $container) { $config = $container->get('config')->getByNamespace('MyPlugin'); $container->setParameter( 'myplugin.customernumber', $config[ 'customernumber' ); parent::build($container); }

Und dann die services.xml:

 %myplugin.customernumber% 

 

Dies führt zu der Fehlermeldung

Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\RuntimeException: You have requested a synthetic service (“db_connection”). The DIC does not know how to construct this service.

Was für mich unverständlich ist, wo verlange ich nach einem Service “db_connection”?

 

Paddelboot

Du nicht direkt, aber der config Service hat dies als Abhängigkeit.

1 „Gefällt mir“

Also wenn ich Dein Posting richtig verstehe, kannst Du die Config eines Plugins so auslesen.

Shopware()->Config()->getByNamespace(‚NAME-PLUGIN‘, ‚VALUE-ZUM-AUSLESEN‘)

Hallo @paddelboot‍,

hinzufüg die ganze Config als service sttat diese wert beim build funktion wie so:

     yourpluginname

dann beim deine Service hinzufüg diese service als argument wie so :

VG,

Tel.: +49 755 - 183 990 00 | Web: http://enbit.de/

1 „Gefällt mir“

Achtung diese Variante beachtet die abweichenden Konfigurationen nicht (Sprachshop / Subshop)

1 „Gefällt mir“

Ich hatte es jetzt so gelöst, dass ich den Config Reader als Parameter an meinen Service übergebe, und dann dort im Konstruktor die Werte in die Klassenparameter lese. Nicht so elegant, geht aber erstmal.

 

 

    public function __construct( ConfigReader $ConfigReader ) {

        $config = $ConfigReader->getByPluginName( $PluginName );
        $this->CustomerNumber = $config['ClientNumber'];
        $this->AuthUsername = $config['Username'];
        $this->AuthPassword = $config['Password'];
    }

@scriptfarm Die Shopware() - „Globale“ vermeide ich lieber, ehrlich gesagt.

PS: Nach dem Bearbeiten meines Eintrages bestehen die Codeschnipsel aus lauter Entities - irgendwie schade.

@Shyim schrieb:

Achtung diese Variante beachtet die abweichenden Konfigurationen nicht (Sprachshop / Subshop)

Auch wenn der Thread schon etwas älter ist. Gibt es in der services.xml die Möglichkeit den Shop/Subshop als zweites Argument zu übergeben?

    %my_plugin_name.plugin_name%
    %???shopware.shop???%

So könnte ich einen Fehler ganz leicht fixen anstatt im Subscriber die Config nochmal mit:

$config = $controller->get('shopware.plugin.cached_config_reader')->getByPluginName('PluginNameXXX', Shopware()->Shop());

zu laden anstatt die injectete zu benutzen.

Gruß Gunnar