Variable an eigene Funktion übergeben

Hallo!

Ich probiere jetzt seit Stunden, irgendwie will es nicht klappen, dabei ist es eigentlich ganz simpel.

Folgendes: Ich habe ein Plugin mit der Funktion onPostDispatchCheckout:

 $this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatch_Frontend_Checkout',
            'onPostDispatchCheckout'
        );

Dazu:

public function onPostDispatchCheckout(Enlight_Event_EventArgs $arguments)
    {
        /**@var $controller Shopware_Controllers_Frontend_Index*/
        $controller = $arguments->getSubject();
        $view = $controller->View();

        
....
$variable = 1;

return $variable;
		
    }

$variable = 1 möchte ich nun an meine eigene Funktion übergeben, das klappt aber überhaupt nicht.

public function getMEINEFUNKTION()
		{
		test = $this->onPostDispatchCheckout();
oder
$test = Shopware()->Plugins()->Frontend()->MeinPlugin()->onPostDispatchCheckout();
		}

 

Leider auch nirgends etwas zu finden wie man das bei Shopware macht.

Kann mir hier jemand helfen an diese Variable zukommen?

Besten Dank schon mal!

Geht das nicht? Shopware???

Eventuell so:

class ... {

 protected $variable;

 public function onPostDispatchCheckout(Enlight_Event_EventArgs $arguments) {
  $this->variable = 1;
 }

 public function getMEINEFUNKTION() {
  $test = $this->variable;
 }

}

 

Nicht ganz leider.

Wenn

$this->variable = abc; 

ist dann liefert mir

$test = $this->variable;

$test = abc, var_dump($test) allerdings NULL Sring(3) „abc“

Keine Ahnung wo der erste Aufruf herkommt. $test exisitiert ja nur in der eigenen Funktion. Dass der erste Wert aber NULL ist, bringt alles zum crashen.

 

bringt alles zum crashen

Das wird wohl nicht im Zusammenhang mit der Variable stehen. Ich vermute eher im Aufbau von deinem Plugin, was aus dem obigen Beispiel aber nicht ersichtlich ist. Woher deine Funktion getMEINEFUNKTION() kommt und wann bzw. wo sie aufgerufen wird ist völlig unklar.

Weil heute die Sonne scheint:

Dieses Beispiel macht keinen Sinn, soll aber die Übergabe von Variablen zeigen.

 true,
      'enable' => true,
      'update' => true
    );
  }

  public function getInfo() {
    return array(
      'version' => $this->getVersion(),
      'label' => $this->getLabel(),
    );
  }

  public function update($version) {
    return ['success' => true, 'invalidateCache' => ['template', 'theme']];
  }

  public function install() {
    $this->registerEvents();
    return ['success' => true, 'invalidateCache' => ['template', 'theme']];
  }

  public function uninstall() {
    return ['success' => true, 'invalidateCache' => ['template', 'theme']];
  }

  private function registerEvents() {
    $this->subscribeEvent('Enlight_Controller_Action_PreDispatch_Frontend_Checkout', 'onPreDispatchCheckout' );
    return true;
  }

  // Aufruf im Checkout
  public function onPreDispatchCheckout(Enlight_Event_EventArgs $arguments) {
    $this->variable = 'abc';
    $this->getMEINEFUNKTION();
  }

  public function getMEINEFUNKTION() {
    $test = $this->variable;
    var_dump( $test );
 }
 

}

?>

 

Hallo, danke. So gibt es eine Fehlermeldung, dass $variable nicht bekannt ist.

Es müsste also lauten:

protected $variable; 

 // Aufruf im Checkout
  public function onPreDispatchCheckout(Enlight_Event_EventArgs $arguments) {
    $this->variable = 'abc';
    $this->getMEINEFUNKTION();
  }

  public function getMEINEFUNKTION() {
    $test = $this->variable;
    var_dump( $test );
 }
 

}

Das ganze ergibt im var_dump dann NULL string(3) „abc“ string(3) „abc“ string(3) „abc“

Keine Ahnung woher er sich das NULL nimmt, ich denke von der protected $variable; in der Klasse. Ohne gehts aber auch wieder nicht.