PHP Zend Framework - Wie bekomme ich ein Request-URI-Fragment vom Request-Objekt?

7

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!

    
Edwin Lee 02.02.2010, 01:12
quelle

4 Antworten

26

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.

    
Alix Axel 02.02.2010, 02:13
quelle
3

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.

    
takeshin 02.02.2010 19:46
quelle
1

Sie können nicht verwenden:

%Vor%

Wenn Sie $_SERVER['REQUEST_URI'] aufrufen, erhalten Sie nie das Wort nach # . Zum Beispiel Ihr Link www.example.com/about#test , und wenn Sie $_SERVER['REQUEST_URI'] aufrufen, erhalten Sie nur www.example.com/about .

    
julius 31.07.2012 15:51
quelle
0

Könnten Sie nicht die PHP-Funktion (en) verwenden explode("#",$_SERVER['REQUEST_URI'])? Vielleicht habe ich die Frage falsch verstanden.

    
Ben Muncey 04.07.2010 03:52
quelle

Tags und Links