2017-02-11 2 views
1

Ich benutze CakePHP 3.0. Ich bin neu in Cookie-Konzept. Ich habe erfolgreich einen Cookie erstellt, aber ich möchte einen Wert aus dem Cookie-Array löschen. Hier ist mein Code: -Wie lösche ich einen Wert aus dem Array im Cookie-Array?

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')); 
} 

Und ich will das Ergebnis: -

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

Antwort

1

Sie können bis auf der Cookie-Komponente in der Dokumentation lesen. Es gibt eine Lösch-Methode, wenn Sie die Daten vollständig in Ihrem Cookie entfernen möchten:

Cookie::delete($key)

In Ihrem Fall ist es wahrscheinlich mehr Sinn macht, über die vorhandenen Daten zu schreiben, nachdem Looping:

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

Warum schreiben wir wieder Cookie nach dem Löschen Wert aus Array – kunal

+0

Nun, Sie möchten das Cookie aktualisieren, nicht wahr? Die langatmige Antwort ist. Wenn Sie den Cookie lesen, erhalten Sie eine Kopie der Daten, die jedoch im Cookie erhalten bleibt. Wenn Sie die Daten aktualisieren, z. Indem Sie einen Schlüssel deaktivieren, müssen Sie auch die Cookie-Daten aktualisieren. Andernfalls erhalten Sie beim nächsten Lesen des Cookies die alten Daten. – dbrumann

+0

also nach dir schreiben wir wieder cookie – kunal

Verwandte Themen