2017-02-11 9 views
1

Я использую Cakephp 3.0. Я новичок в концепции cookie. Я успешно создал файл cookie, но хочу удалить значение из массива файлов cookie. Вот мой код: -Как удалить значение из массива в массиве файлов cookie?

enter code here 
$cookiedata= 
Array 
(
[0] => 2 
[1] => 1 
) 

$_GET['id'] = 2; 

public function cartitems(){ 
    $cookiedata = $this->Cookie->read('ProductCartdata'); 
    $this->loadModel('Products'); 
    $query = $this->Products->find('all')->where(['id IN' =>$cookiedata]); 
    $products = $query->hydrate(false)->toArray(); 
     if(isset($_GET['id'])){ 
      if(($key = array_search($_GET['id'], $cookiedata)) !== false) { 
        unset($cookiedata[$key]); 
      } 
    $this->redirect(['controller'=>'test','action' => 'cartitems']);  
    } 
     $this->set(compact('products','cookiedata')); 
} 

И я хочу, чтобы результат: -

enter code here 
Array 
(
[0]=>1 
) 

ответ

1

Вы можете прочитать на Cookie-компонента в документации. Существует удаление объекта-метод, если вы полностью хотите удалить данные в вашем печенье:

Cookie::delete($key)

В вашем случае это, вероятно, имеет смысл написать на существующих данных после цикла:

$this->Cookie->write('ProductCartdata', $cookiedata); 
+0

почему мы снова пишем cookie после удаления значения из массива – kunal

+0

Ну, вы хотите обновить Cookie, не так ли? Долгий ответ. Когда вы читаете файл cookie, вы получаете копию данных, но он остается неизменным в файле cookie. Если вы обновите данные, например. отключив ключ, вы также должны обновить данные cookie. В противном случае в следующий раз, когда вы прочитаете из файла cookie, вы получите старые данные. – dbrumann

+0

поэтому, согласно вам, мы снова пишем cookie – kunal