Immer $_GET Parameter von der route in Zend Framework 2

Zend Framework 1 hatte eine sehr einfache Art zu Parsen von URL-Routen und die Einstellung gefunden, params in der $_GET superglobale für einfachen Zugang. Sicher, Sie könnte verwenden ->getParam($irgendwas) im inneren der Steuerung, aber wenn der Parameter gefunden wurde, der in der URL, es war auch zugänglich über $_GET.

Beispiel für url mypage.com/mymodule/mycontroller/myaction/someparam/5:

ZF1

$this->getParam('someparam'); //5
$_GET['someparam']; //5

ZF2

$this->getEvent()->getRouteMatch()->getParam('someparam'); //5
$_GET['someparam'] //undefined index someparam

Offensichtlich, der Unterschied ist, dass ZF2 stellt NICHT die route params in der $_GET superglobale.

Wie kann ich es machen das setzen der analysierten Parameter in der $_GET superglobale, da die Erweiterung der controller-und genau die Definition eines Konstruktors, der das tut, in Frage (weil RouteMatch ist nicht ein Objekt noch nicht und kann nicht aufgerufen werden, aus dem controller-Konstruktor)?

Aufrufen $_GET = $this->getEvent()->getRouteMatch()->getParam('someparam'); in jedem meiner Controller funktionieren würde, aber das will ich nicht.

In anderen Worten, nach der Beispiel-URL oben, ich möchte in der Lage sein zu tun, $_GET['someparam'] immer noch den Wert "5" in einer beliebigen Komponente in der Anwendung.

Edit: wie es Aussieht war ich nicht klar genug, also werde ich versuchen zu klären, einige mehr. Ich will, was param ich geben in die URL-über - /Schlüssel - /Wert-Bildung zur Verfügung stehen in $_GET sofort. Ich habe nicht wirklich ein problem mit dem bekommen der param, ich weiß, wie um es zu bekommen und ich erweiterte Zend controller, so kann ich nur aufrufen $this->getParams wieder wie in ZF1, und jetzt alle regler verlängern, ich möchte nur die Parameter aus der URL automatisch in $_GET als gut, so kann ich leicht auf Sie zugreifen Drittanbieter-Komponenten, die mit $_GET nativ.

Edit 2: Aktualisiert, als Reaktion auf Samuel Herzog ' s Antwort:
Ich weiß nicht wirklich Sinn der Aufhebung der SRP in diesem Fall, da die Bibliotheken sind so aufgebaut, dass Sie brauchen den direkten Zugriff auf $_GET - machen Sie Ihre eigenen filtern und direkt angewiesen auf das superglobale. Sie auch direkt abrufen $_FILES und $_POST für die Verarbeitung, es ist nur so, wie Ihr code funktioniert.

Ich habe folgende Methode in der abstrakten controller:
$dies->mergeGet(); was im Grunde macht $_GET absorbieren alle die passende route params und alles funktioniert wie vorgesehen, aber da die Bibliotheken Bedarf es in jedem controller/action, es könnte langweilig werden, die zum aufrufen dieser Methode zu jeder Zeit. Wenn nur der controller hatte eine init () - Methode wie in ZF1...

Nicht sicher genug für eine Antwort, versuchen Sie ->params('key', $defaultValue) entweder auf dem Controller oder auf Anfrage, ich denke, das ist die, die Sie suchen.
Ich habe kein problem, Holen Sie den param, meine Sorge ist eine andere. Bitte siehe Frage bearbeitet
seine Controller::Params('key', $default) fordert ein Controller-Plugin (Parameter) um zu verhindern, dass Sie vom schreiben Controller::getEvent()->getRouteMatch()->getParam(...).

InformationsquelleAutor Swader | 2012-08-05

Schreibe einen Kommentar