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.
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
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 –
@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