Neues Pluginsystem - beim speichern der Konfiguration datei speichern

Hallo liebe Community,

 

im alten Pluginsystem konnte ich mit folgendem. Codeschnipsel, in der Bootstrap eine Datei speichern, wenn ich auf Konfiguration speichern geklickt habe.:

    $config = $this->Config();
    $controller = $arguments->getSubject();
    $view = $controller->View();
		
    $request = $controller->Request();
    if ($request->getModuleName() == 'backend' and
    $request->getControllerName() == 'config' and
    $request->getActionName() == 'saveForm' )  
    {
	$post = $request->getPost();
        $post = (isset($post[0]) ? $post[0] : $post);

                if ($post['label'] === $this->getLabel()) 
		{
		$file = fopen($this->viewDir . '/frontend/index/style.css', "w");
		fwrite($file, 'test');
		fclose($file);
		}
		
    }

 

Ich wollte nun gerne die Möglichkeit auch im neuen Pluginsystem haben.

Es muß doch irgendwie möglich sein das dies auch in der frontend.php geht, oder.

 

Hilfe würde ich sehr begrüßen.

 

L.G.

 

Schau mal hier:

https://forum.shopware.com/discussion/51323/css-im-plugin-am-less-uebergeben

 

Hallo R4M,

vielen Dank für den Hinweis.

Allerdings scheint das auch noch für das alte Pluginsystem zu sein.

Ich habe den Code mal eingesetzt, aber es tut sich nichts???

 

L.G.

Noch etwas:

Ich habe nun in der Frontend.php einen event registriert:

“Enlight_Controller_Action_PostDispatchSecure_Backend_Config_SaveForm” => “saver”,

Dann habe ich eine function zum testen geschrieben, in der beim speichern in eine Datei geschrieben wird:

 public function saver() {      
        $file = fopen($this->viewDir . “/frontend/index/style.css”, “w”);
        fwrite($file, 'test);
        fclose($file);
    }

Aber unglücklicherweise wird die Datei nicht gespeichert.

Könnte mir hier BITTE jemand helfen?

Hatte den Code sogar schon in der LESS function:

        $file = fopen($this->viewDir . “/frontend/index/style.css”, “w”);
        fwrite($file, 'test);
        fclose($file);

Aber auch hier wird keine Datei erzeugt.

Was mache ich falsch???

 

L.G.

Hallo,

was ist denn die Frontend.php?

Also meine Frage ist, wird denn dein Event überhaupt ausgeführt?

Wenn du das nicht in der services.xml definierst, dann wird auch nie deine Frontend.php als Event Subscriber ausgeführt.

 

Prüfe auch mal die Schreibrechte auf den Ordner. Vielleicht ist das schon der Fehler.

 

 

MFG

 

derwunner

Hallo alles wird in der frontend.php ausgeführt, welche sich im Subscriber Directory befindet.

 

Nur, wenn ich jetzt den event:

" Enlight_Controller_Action_PostDispatchSecure_Backend_Config_SaveForm "

hinzufüge, dann wird der event nicht gefeuert.

Hier der Code:

 public static function getSubscribedEvents()
    {
        return array(
			"Enlight_Controller_Action_PostDispatch_Backend_Config_SaveForm" => "saver"
        );
    }
   
   public function saver() {
	   
	    $file = fopen($this->viewDir . "/frontend/index/style.css", "w");
		fwrite($file, 'test');
		fclose($file);
    }

 

Warum nur wird der event nicht ausgeführt, wenn ich auf speichern klicke?

Liegt es daran, dass ich eine backend.php benötige???

L.G.

Probier mal das Event ohne Secure. Also nur das PostDispatch Event. Vielleicht liegts daran.

Ich weiß gar nicht ob „Enlight_Controller_Action_PostDispatch_Backend_Config_SaveForm“ hier richtig ist. Wird so im SW gar nicht benutzt.

Nachtrag:

Hilft das ggf. weiter?

 

Danke für den Hinweis, bzw.den Link.

Ein Zitat aus dem alten Thread:

Der Part “Enlight_Controller_Action_PostDispatchSecure” ist gleich für alle/viele Event, danach kommt das Modul (_Backend), dann der Controller (_Config), dann die Action (_SaveForm).

 

Aber dieser Controller wird gar nicht angesprochen.