У меня есть поиск с несколькими параметрами, передаваемыми через URL-адрес - город, кухня, функции и на какой странице вы находитесь (спасибо, paginator)
Если пользователь на странице 2 - ...index / page: 2 и нажимает на город "Нью-Йорк", они должны перейти на ... index / page: 2 / city: New York
Затем, если они затем нажимают на Хьюстон, они должны идтиto ... index / page: 2 / city: New York_Houston
Есть ли какой-нибудь простой / сложный способ сделать это?Я начал писать свой код, чтобы разбить $ this-> passArgs и перестроить его - но пока это было мучительно, и кажется, что я пишу кучу кода для чего-то, что, я надеюсь, Cake имеетспособ обработки.
Пример:
Пользователь находится на странице 2 списка ресторанов - индекс / страница: 2
Пользовательнажимает «Нью-Йорк», страница обновляется с индексом / страница: 2 / город: Нью-Йорк
Пользователь нажимает «Сан-Диего» - страница обновляется с индексом / страница: 2 / город: Нью-Йорк_Сан-Диего
Пользователь снова нажимает «Нью-Йорк» (чтобы его отключить), страница обновляется с индексом / страница: 2 / город: Сан-Диего
Моя попытка создатьсписок ссылок на города, которые будут выполнять переключение такого типа:
Самая большая проблема не в том, что я не могу это сделать (код ниже работает), но 1) он не учитываетдля любых других вариантов запросов, таких как страница, кухня, функции ... и т. д. - и 2) мне кажется, что это ТОННА кода, чтобы сделать что-то простое.
Меня меньше беспокоит любойдействительно незначительные ошибки в коде и больше о наилучшем подходе к этой проблеме.(не стесняйтесь комментировать с любыми вопросами - мне всегда нравится слышать лучшие способы сделать что-нибудь / все).
Большое спасибо заранее за любую помощь!
$passedCities = explode("_", $this->passedArgs['city']);
foreach($cities as $city):
$city_name = trim(ucwords(strtolower($city['City']['name'])));
$cityExists = in_array($city_name, $passedCities);
$queryCities = $passedCities;
if($cityExists) {
unset($queryCities[array_search($city_name, $queryCities)]);
} else if($city_name != "") {
array_unshift($queryCities, $city_name);
}
$urlSuffix = "";
if(count($queryCities) > 0) {
$urlSuffix = "city:";
foreach($queryCities as $c) {
$urlSuffix .= trim($c) . "_";
}
}
$urlSuffix = substr($urlSuffix,0,-1);
echo "<li>" . $this->Html->link($city_name .
" (" . $city[0]['count'] . ")", array($urlSuffix)) . "</li>";
endforeach;