PHP Zend Framework - Как получить фрагмент URI запроса из объекта запроса? - PullRequest
7 голосов
/ 02 февраля 2010

Скажите, например, У меня есть URI http://127.0.0.1/somecontroller/someaction#12345, который приводит меня к действию someAction() контроллера someController. Оттуда я могу получить объект запроса через $this->getRequest().

Я также могу получить различную информацию относительно URI из объекта Request.

Но как я могу получить фрагмент (то есть часть "12345" после # в примере)? Ни getRequestUri(), ни getParams() не показывают часть фрагмента.

Спасибо!

Ответы [ 4 ]

26 голосов
/ 02 февраля 2010

Фрагмент URL-адреса никогда не отправляется на сервер с помощью GET-запросов (или любого другого типа HTTP-запроса в этом отношении), единственный способ получить его - это написать фрагмент кода Javascript, который анализирует URL-адрес и отправляет например, фрагмент обратно на сервер через Ajax.

Этого нельзя сделать только с помощью PHP.

3 голосов
/ 02 февраля 2010

Согласно спецификации протокола HTTP, фрагмент фрагмента игнорируется. Однако браузеры поддерживают перенаправления с помощью хэша.

Если вы автоматически генерируете хэши, вы можете передать id в качестве параметра запроса: http://127.0.0.1/somecontroller/someaction/id/12345/#12345

и затем:

$this->getRequest()->getParam('id')

Но это будет обрабатывать случай только с помощью хэша, например когда пользователь вводит URL вручную.

1 голос
/ 31 июля 2012

Вы не можете использовать:

explode("#",$_SERVER['REQUEST_URI'])

потому что, когда вы звоните $_SERVER['REQUEST_URI'], вы никогда не получите слово после #. Например, ваша ссылка www.example.com/about#test, и когда вы звоните $_SERVER['REQUEST_URI'], вы просто получаете www.example.com/about.

0 голосов
/ 04 июля 2010

Не могли бы вы использовать функцию (и) php explode("#",$_SERVER['REQUEST_URI'])? Возможно, я неправильно понял вопрос.

...