我有几个像这样构建的cookie
Parkplatz['1']
Parkplatz['2']
Parkplatz['3']
现在我想要所有名为“Parkplatz”的cookie进行数据库查询并找到带有相应Uid的条目,我尝试这样做(我使用的是extbase,但普通的PHP也可以):
$carid = $this->request->getArgument('car_id');
setcookie('Parkplatz[' . $carid . ']', '' . $carid . '', time() + (10 * 365 * 24 * 60 * 60));
foreach($_COOKIE['Parkplatz'] as $cookies){
$cars = $this->carRepository->findByUid($cookies);
$this->view->assign('cars', $cars);
};
这样可行,但只能使用名为“Parkplatz”的第一个cookie设置。有什么想法吗?
答案 0 :(得分:0)
我认为,如果你有一个cookie或一组cookie,你在循环中会感到困惑。
您的变量$cookies
实际上是一个Cookie。因此,在循环中假定Parkplatz[1]
首先出现,然后找到$cars
,并在视图中将它们分配给'cars'
。但是,下一个循环将覆盖视图中'cars'
的最后一个分配。
要解决此问题,您需要在视图中添加多个车辆清单。最后,这可能是这样的:
$viewCounter = 1;
foreach($_COOKIE['Parkplatz'] as $oneCookie){
$cars = $this->carRepository->findByUid($oneCookie);
$this->view->assign('car_' . $viewCounter, $cars);
$viewCounter++;
}
当然,这需要在模板中进行一些准备工作,而且解决方案可能过于静态。
或者,收集所有的汽车清单,如下:
$allCars = array();
foreach($_COOKIE['Parkplatz'] as $oneCookie){
$cars = $this->carRepository->findByUid($oneCookie);
$allCars[] = $cars;
}
$this->view->assign('cars', $allCars);
我无法确定什么更适合您的最终解决方案,但我希望这会帮助您找到方法。