Url-Parameter abfragen und verändert zurückgeben

Hallo zusammen,

aktuell versuche ich vor dem Aufbau der Detail-Seite abzufragen, ob die Variable number vorhanden ist, um dann - sofern sie nicht gesetzt wurde - mit einem eigenen Wert zurück zu geben.

public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail' => 'onPostDispatchDetail'
        ];
    }

 public function onPostDispatchDetail(\Enlight_Event_EventArgs $args)
    {

/**@var $controller Shopware_Controllers_Frontend_Detail $detailController */
        $detailController = $args->getSubject();

        $Data = $detailController->Request();

}

Doch obwohl über die Url $number=1234567 weitergegeben wird, lässt sie sich im erhaltenen Object nicht finden. Und wie ich sie (verändert) zurückgeben kann, habe ich auch noch nicht herausgefunden.

Hintergrund ist, dass sie mit einem variablen Wert übergeben möchte, falls sie nicht gesetzt und per Url weitergereicht wurde.

Hat jemand eine Idee?

$detailController = $args->getSubject(); 
$request = $detailController->Request();
$param = $request->getParam('number');

so?

1 „Gefällt mir“

Super, danke! Das Auslesen hat sehr gut funktioniert.

Jetzt muss ich nur noch den eigenen Wert in/mit dieser Variable wieder zurückgeben. Da passiert momentan leider gar nichts:

$detailController = $args->getSubject();
$request = $detailController->Request();
$iNumber = $request->getParam('number');

// Verarbeitung 
$oNumber = 1234567;

// Rückgabe 
$request->setParam('number', $oNumber);

 

Genau so sollte es aber funktionieren.

@mctl schrieb:

Super, danke! Das Auslesen hat sehr gut funktioniert.

Jetzt muss ich nur noch den eigenen Wert in/mit dieser Variable wieder zurückgeben. Da passiert momentan leider gar nichts:

$detailController = $args->getSubject();
$request = $detailController->Request();
$iNumber = $request->getParam(‚number‘);

// Verarbeitung
$oNumber = 1234567;

// Rückgabe
$request->setParam(‚number‘, $oNumber);

 

Die Frage ist, was du erwartest? Möchtest du diesen Paramter in der URL Zeile sehen? Oder dass auf der ADS etwas anderes angezeigt wird? 
Du veränderst den Parameter schon nach dem die ADS vorbereitet wurde (PostDispatchSecure). Eventuell musst du PreDispatch benutzen oder redirect/forward.
Erklär am beaten, was du mit dem Setzen des Parameters in den Request erreichen möchtest.

Oha - wie dumm von mir! Ich war die ganze Zeit gedanklich auf „PreDispatch“, ohne zu bemerken, dass ich aber „PostDispatch“ verwende. *g*

Danke für den Hinweis! :slight_smile: