Получить #part в URL с помощью PHP / Symfony - PullRequest
13 голосов
/ 12 апреля 2010

Я работаю с Symfony 1.2. У меня есть представление со списком объектов. Я могу заказать их, отфильтровать по категориям или перейти на следующую страницу (есть нумерация страниц). Все сделано с помощью AJAX, поэтому мне не нужно снова загружать всю страницу.

То, чего я хочу добиться - это, например, http://urltopage # page = 1 & order = title & cats = 1,2 ; поэтому новая страница сохраняется в истории браузера, и он может вставить ее в другую сеть.

Я не нашел способа получить #part. Я знаю, что это только для браузера, но я не могу поверить, что не могу пройти через PHP. Я уверен, что есть простое решение, которое мне не хватает ...

Большое спасибо!

Ответы [ 3 ]

18 голосов
/ 12 апреля 2010

Вы не можете получить его через PHP, потому что он никогда не передается на сервер.

Однако вы можете получить его с помощью JavaScript через window.location.hash, а затем передать его на сервер через AJAX.

2 голосов
/ 12 апреля 2010

Якорь, как вы сказали, это информация, которая используется браузером и не отправляется на сервер при выполнении стандартного запроса HTT GET.

Это означает, что ваш PHP-скрипт не может получить эту информацию ...


... если вы не попробуете использовать магию на основе Javascript, например, использовать Ajax-запрос, отправить некоторый дополнительный параметр, который будет содержать значение привязки, или что-то в этом роде ... но это не будет достаточно стандартным способом делать вещи, и я бы не рекомендовал делать это ...

0 голосов
/ 13 сентября 2011

window.location.hash - единственный способ («хеш» / якорь только на стороне клиента, никогда не видимый серверами), но ничто не запрещает вам манипулировать строкой запроса (преобразованием в параметры GET) или создавать FORM с использованием JS и преобразование в параметры POST.

Это основы для построения обработчика / менеджера запросов AJAX javascript. Но в конце вы должны создать «нормальный» URL GET / POST для отправки вашего запроса.

Вы также можете сохранить в cookie хеш, но, опять же, я не буду использовать его как способ обработки маршрутизации или передачи данных.

...