Wie kann ich eine XML schreiben und diese als config.xml nutzen?

Aktuell versuche ich in der Install-Funktion meines Plugins eine config.xml generieren zu lassen, allerdings scheitere ich an der Schreibberechtigung im Resource Ordner. 

Sobald ich via chmod dem Resource Ordner alle Berechtigungen zukommen lassen, kann ich die config.xml schreiben. 

Allerdings wäre dies für unsere Kunden unvorteilhaft, habt Ihr eine Idee wie ich die config.xml per PHP im richtigen Ordner schreiben kann.

public function install()
{
    $this->generateCustomConfig();
}

public function generateCustomConfig()
{
    $xmlConfigWriter = new \XMLWriter();

    chmod( __DIR__. '/Resources/', 0777);

    $xmlString = '
                    
                            
                                
                                    pathToEmos
                                    Analytics JS Library
                                    Hier können Sie die Analytics JS Library hinzufügen.
                                ';

    $xmlString .= '         
                    ';

    $dom = new DOMDocument;
    $dom->preserveWhiteSpace = FALSE;
    $dom->loadXML($xmlString);
    
    $dom->save( __DIR__. '/Resources/config.xml');

}

 

Hm, die Frage habe ich noch nie hier im Forum gelesen. Die config.xml wird eigentlich manuell angelegt.

Ich habe das Problem, dass ich n-mal Select Felder mit den Produkteigenschaften benötige. Da ich allerdings nicht wissen kann, wieviele Produkteigenschaften ein Shop bestizt kann ich diese allerdings nicht manuell anlegen. Im Plugin, sollte eigentlich nur die Reihenfolge der Produkteigenschaften bestimmt werden können. 

Ah verstehe. Da gibt es bestimmt eine Lösung (unter Umständen kann man auch dynamische Bereiche einbinden). Aber ob das mit den Eigenschaften auch geht bin ich mir zur Stunde nicht ganz sicher.

Hat mir den niemand eine Idee, wie ich den Fall umsetzten kann?

@shopnoob85‍ Falls du noch auf der Suche bist, hier ist die passende Lösung für dich.

Lege zunächst deine XML File über den Shopware eigenen File Service an. Du findest deine Datei dann im Root/files/your_dir

Das geht mit: 

$fileService = $this->container->get("shopware.filesystem.private");

Erstelle dann einen ordner im im Shopware Shop/files Verzeichnis:

$fileSystem->createDir("dir_name");

Erstelle dann deinen XML in dem Ordner:

$fileSystem->write("dir_name/config.xml", $yourXmlFileContent);

Das wars! 

VG, dein Experthing Team

1 Like

Ehy, vielen Dank für die Antwort. 

@shopnoob85 schrieb:

Ehy, vielen Dank für die Antwort. 

Jederzeit gerne.  

VG, dein Experthing Team