【发布时间】:2011-04-11 05:28:23
【问题描述】:
我有一个通过 url 传递多个参数的搜索 - 城市、美食、功能以及您所在的页面(感谢 paginator)
如果用户在第 2 页 - ...index/page:2 并点击城市“纽约”,他们应该转到 ...index/page:2/city:New York
然后,如果他们随后点击休斯顿,他们应该转到 ...index/page:2/city:New York_Houston
是否有任何简单/内置的方法可以做到这一点?我已经开始编写我的代码来分解 $this->passedArgs,并重建它 - 但到目前为止这一直很痛苦,看起来我正在为我希望 Cake 有的东西编写大量代码一种处理方式。
示例:
用户位于餐厅列表的第 2 页 - index/page:2
用户点击“纽约”,页面刷新 index/page:2/city:New York
用户点击“圣地亚哥” - 页面刷新 index/page:2/city:New York_San Diego
用户再次点击“纽约”(取消切换),页面刷新为 index/page:2/city:San Diego
我尝试创建可以进行这种切换的城市链接列表:
最大的问题不是我做不到(下面的代码有效),而是 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;
【问题讨论】:
标签: php mysql cakephp cakephp-1.3