2016-12-25 3 views
2

J'ai besoin d'envoyer un cookie au navigateur en utilisant Zend Framework 3.Comment ajouter un cookie en utilisant Zend Framework 3?

Mon code suit ci-dessous, mais il ne fonctionne pas:

$cookie = new Zend\Http\Header\SetCookie('CookieKey', $val, $time, '/', ''); 
$response->getHeaders()->addHeader($cookie); 

Comment est la bonne façon de placer des cookies au travail?

Répondre

0

Vous définissez le chemin du cookie sur '/' et utilisez un domaine vide '' lors de la création d'une nouvelle instance SetCookie. Passer une chaîne vide en tant que domaine peut entraîner des problèmes.

Le deuxième détail est que vous devez passer un temps dans le futur en tant que troisième argument (expires). Es-tu sûr d'avoir donné un temps à l'avenir?

Jetez un oeil exemple suivant, il définit un cookie sur mon application ZF3 sans aucun problème:

namespace MyApp\Action; 

use Zend\Http\Header\SetCookie; 

public function indexAction() 
{ 
    $cookie = new SetCookie('bar', 'baz', time()+7200); 
    $this->getResponse()->getHeaders()->addHeader($cookie); 
    return new ViewModel(); 
} 
+0

Je débogué le code aujourd'hui et je trouve le problème, les en-têtes avaient déjà être envoyés. ZF3 affiche un avertissement "obsolète", forçant les en-têtes à être envoyés. J'ai résolu les problèmes obsolètes et les cookies fonctionnent maintenant, mais que puis-je faire pour mettre le contenu en tampon afin de ne pas envoyer d'en-têtes avec des messages d'avertissement? – Silas

+0

Vous devez éliminer les avis de dépréciation. Il suffit de creuser soigneusement les messages et de corriger la raison. Vous n'avez pas besoin d'utiliser la mise en mémoire tampon de sortie. Lorsque les messages de dépréciation ont disparu, les problèmes liés à la session disparaîtront probablement. – edigu