Hallo, weiß jemand vielleicht wie man eine globale Variable erstellen kann, die ich dann überall in meiner Bootstrap Datei verwenden kann? Ich habe bisher versucht einfach eine Klassenvariable anzulegen, nur irgendwie kann darauf nicht zugegriffen werden?! folgendes möchte ich in meiner Plugin erreichen. Der Benutzer soll beim installieren des Plugins die Anzahl bestimmen (in der Konfiguration). Die vom Benutzer bestimmte Anzahl soll in einer globalen variable gespeichert werden und im Widget Einstellung soll dann nachher so viele Komponenten angezeigt werden wie der Benutzer in der Plugin Konfiguration angegeben hat (siehe registerEmotionElement() im Code). Nur genau das klappt nicht. Hoffentlich kann mir da jemand weiter helfen. class Shopware\_Plugins\_Frontend\_myPlugin\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { var $globaleVariable; public function install() { $this-\>createConfiguration(); $this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch','onPostDispatchWidgets'); $this-\>registerEmotionElement(); return true; } public function createConfiguration() { $form = $this-\>Form(); $form-\>setElement('number', 'anzahlMenge', array( 'label' =\> 'Anzahl bestimmen', 'value' =\> 4 ) ); } public function onPostDispatchWidgets(Enlight\_Event\_EventArgs $args){ $view = $args-\>getSubject()-\>View(); $config = $this-\>Config(); if (empty($config-\>show) && $config-\>show !== null) { return; } $globaleVariable = $config-\>anzahlMenge; $args-\>getSubject()-\>View()-\>addTemplateDir( $this-\>Path() . 'Views/' ); } public function registerEmotionElement() { $component = $this-\>createEmotionComponent(array( 'name' =\> 'somename', 'template' =\> 'component\_custom' )); $i = 1; for($i; $i \<= $globaleVariable; $i++) { $component-\>createTinyMceField(array( 'name' =\> 'htmlEditor', 'fieldLabel' =\> 'Text', 'allowBlank' =\> true )); } }//registerEmotionElement }//class
Wenn, dann schon über $this die Variable anpsrechen. Etwa so private $globaleVariable; ...... ...... ...... $this-\>globaleVariable;
Danke für die Antwort, aber ich habs probiert und es klappt nicht… Das Problem ist, so glaube ich bei dieser Zeile in der onPostDispatchWidgets(Enlight_Event_EventArgs $args) Methode. $this->globaleVariable = $config->anzahlMenge; Ich habs nicht geschafft den Wert aus der Konfigurationsmenu in meine globale Variable zu speichern. Und hab auch keine Ahnung warum?
Speziell in diesem Fall wird das auch nicht funktionieren, weil Du in der install() Funktion versucht auf Config() zuzugreifen, obwohl das noch nicht existiert.
Also gibt es keine Möglichkeit den Wert aus der Konfigurationsmenu in eine globale Variable zu speichern??
[quote=“Jakko”]Also gibt es keine Möglichkeit den Wert aus der Konfigurationsmenu in eine globale Variable zu speichern??[/quote] In diesem Fall (in der install() Methode) nein. Allein deswegen, weil die Config-Daten vom Kunden noch gar nicht eingegeben worden sind.