2016-07-12 5 views
3

Ich möchte eine YAML-Konfiguration zu einem Dienst in Symfony injizieren. Derzeit injiziere ich den Pfad meines Bundles und einen relativen Pfad zur Datei und parse ihn manuell mit Yaml::parse, aber gibt es einen einfacheren Weg dazu?
Das Ziel wäre also, dass der Konstruktor des Dienstes ein Array der bereits analysierten YAML-Konfiguration erhalten würde.Ist es möglich, YAML-Datei zu einem Dienst in Symfony zu injizieren?


Um etwas genauer darüber zu setzen:

Derzeit habe ich eine YAML-Datei in einem Resources Verzeichnis in meinem Bündel und es in einem Dienst zu analysieren, ich so etwas wie folgt verwenden:

$yamlFile = sprintf(
     '%s/%s', 
     $container->get('kernel')->getBundle('MyBundle')->getPath(), 
     $pathToFile 
); 

Also muss ich sowohl den Container (kann ich irgendwie nur den Pfad zu dem Bündel injizieren?) Und den Pfad zu der Datei injizieren. Ich hätte nichts dagegen, mein System ein wenig zu restrukturieren, z. Lege die yaml-Datei in das config-Verzeichnis des Bundles, wenn das helfen würde, aber ich möchte es von anderen Konfigurationen getrennt halten.

+0

Als Alternative kann ich mir vorstellen, einen speziellen Dienst zu erstellen, den ich mit den Parametern injizieren könnte, damit er sich um das Parsing kümmert und anschließend die geparsten Daten herausholt. Aber das scheint eine Aufgabe zu sein, die vielleicht schon in Symfony gelöst wurde. – Czechnology

+1

Ich sehe nicht die genauen Anforderungen für Konfigurationsdateien, aber wenn es Ihnen nichts ausmacht, das gleiche Format wie herkömmliche Konfigurationsdateien in app/config zu verwenden, ist das Hinzufügen zusätzlicher Ressourcen zur app/config nicht genug, auch wenn Sie möchten es von Diensten aus anrufen? Importe: - {Ressource: '% kernel.root_dir%/parameters.yml'} http://symfony.com/doc/current/cookbook/configuration/configuration_organization.html –

+1

@ScalatronMotoroller Ich verstehe ich schaffen könnte eine andere Konfigurationsdatei und importieren Sie es so, aber da es sich nur auf einen Teil eines Bündels bezieht, scheint es nicht richtig zu sein, es so mit der Wurzel des Projekts zu koppeln. Übrigens kommt das Beispiel, das Sie gepostet haben, von einem Teil, wo sie zeigen, dass es nicht so dynamisch arbeitet. – Czechnology

Antwort

3

Sie können die erforderliche Konfiguration in der Bundle-Erweiterung laden, wie dort beschrieben: http://symfony.com/doc/current/cookbook/bundles/extension.html und sie in einem neuen Parameter speichern oder in einen beliebigen Dienst injizieren.

+0

Scheint wie die beste Lösung ... Abgesehen davon, dass ich seit Stunden schon mit einem "_Es gibt keine Erweiterung in der Lage, die Konfiguration für ..._" Fehler zu kämpfen. Ich habe alle Verweise dafür verfolgt, die ich finden konnte, und ich kann immer noch nicht die Erweiterung zur Arbeit bekommen. – Czechnology

+0

Wenn jemand einen Tipp hat, wäre ich dankbar: https://StackOverflow.com/Questions/38361084/ – Czechnology