Sagen Sie z.B. Ich habe eine URI http://127.0.0.1/somecontroller/someaction#12345
, die mich zur Aktion someAction()
des SomeController-Controllers bringt. Von dort kann ich das Request-Objekt über $this->getRequest()
abrufen.
Ich kann auch verschiedene Informationen bezüglich des URI aus dem Request-Objekt abrufen.
Aber wie kann ich das Fragment (d. h. den "12345" -Teil nach dem # im z. B.) abrufen? Weder getRequestUri()
noch getParams()
zeigen den Fragmentteil an.
Danke!
Der Fragmentteil der URL wird niemals über GET-Anfragen (oder irgendeine Art von HTTP-Anfrage) an den Server gesendet. Die einzige Möglichkeit ist, dass Sie ein Javascript-Snippet schreiben, das die URL analysiert und sendet das Fragment zurück zum Server über Ajax zum Beispiel.
Dies kann nicht mit PHP alleine gemacht werden.
Gemäß der HTTP-Protokollspezifikation wird der Fragmentteil ignoriert. Browser unterstützen jedoch Weiterleitungen mit Hash.
Wenn Sie Hashes automatisch generieren, übergeben Sie möglicherweise id
als Anforderungsparameter:
http://127.0.0.1/somecontroller/someaction/id/12345/#12345
und dann:
$this->getRequest()->getParam('id')
Aber dies wird den Fall nur mit dem Hash behandeln, z. wenn der Benutzer die URL manuell eingibt.
Könnten Sie nicht die PHP-Funktion (en) verwenden explode("#",$_SERVER['REQUEST_URI'])?
Vielleicht habe ich die Frage falsch verstanden.
Tags und Links php zend-framework request uri