hoppler
21. Februar 2018 um 08:06
1
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.
R4M
21. Februar 2018 um 08:19
2
hoppler
21. Februar 2018 um 09:00
3
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.
hoppler
21. Februar 2018 um 09:29
4
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
hoppler
21. Februar 2018 um 12:07
6
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.
R4M
21. Februar 2018 um 12:23
8
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?
Guten Morgen liebe Shopware Community, gibt es ein Event, das beim Speichern der Einstellungen eines Plugins gefeuert wird? Ich habe mir schon die Auflistung aller Events angeschaut, allerdings finde ich dort nichts passendes für mich. Edit: Um es...
Likes: 1 ❤
hoppler
21. Februar 2018 um 13:59
9
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.