Показать сообщение отдельно
  #1 (permalink)  
Старый 14.05.2015, 09:49
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Где взять годный объект параметров урла
Если с частями pathname все довольно просто, и я даже не заморачивался написанием урло-генератора для них, то с параметрами, которые search string всегда был геморрой. На php от него удалось избавиться, а для js хотелось бы подыскать готовый, потому что я вообще не знаю как на js колдовать с геттерами и сеттерами, без которых геморроя будет не меньше.

Суть такова. На примере как работает пхпшный парсер-генератор:

echo $get->url_home()->page(1)->order('da')->onpage(32)->some('param');


дает типа

http://www.example.com?page=1&order=da&onpage=32&some=param


после того как дал берет (на любой другой странице) и можно поменять или выкинуть параметры

echo $get->url_home()->page(null)->order('dd')->onpage(null)->some('no');


дает

http://www.example.com?order=dd&some=no


Все параметры - условные, просто для примера. Я юзаю коротки ключи, они хранятся в настройках объекта, чтоб было понятно пишу полностью.

Если не стирать значения, а просто поменять или добавить еще, то старые параметры выведутся как были

Допустим было

http://www.example.com?page=1&order=da&onpage=32&some=param


выводим где-то адрес в линк

echo $get->url_home()->some('no')->bar('baz');


получаем

http://www.example.com?page=1&order=da&onpage=32&some=no&bar=baz


Таким образом объект поддерживает любое количество параметров (включая массивы) и в любой момент можно поменять любой параметр, убить или добавить новый.

Затем по проверкам

if($page=$get->page){
/* Если в page что-то есть, оно будет в page, если нет, там будет null */
}


Ну и просто можно профтыкать

$get->page=$page


чтоб поменять номер страницы перед выводом.

Объект сам растеризуется по умолчанию для обычных линков.

Есть что-то похожее на js из готового и не сильно жирного?
Ответить с цитированием