私は多くのサーフィンをしました。私はCOOKIEを使用して値を割り当てて取得したいと思います。私はZF2でどうすればいいですか?私は、クッキーに価値を割り当てるための多くの例を見ました。クッキーから値を取得する方法を説明してください。Zend Framework 2 - クッキーの概念
答えて
HTTPでクッキーが(リクエストに保存されているRFC 2109単に何かを参照し、要求が行われるたびに送信されます。だから、他のパラメータを追加することができ、応答既存のクッキーに加えて保存される。
クッキー検索は、RFC 2109によると、あなたは、それぞれCookie
ヘッダーとSet-Cookie
ヘッダーを使用しています。更新あなたがResponse
を使用したクッキーに、Request
を介して行われます。あなたが直接
$this->getRequest()->getHeaders()->get('Cookie')->foo = 'bar';
または、設定されたクッキーを経由:直接クッキーにアクセスするための要求および応答でのプロキシがありますので
$this->getResponse()->getHeaders()->get('Set-Cookie')->foo = 'bar';
物事はいえ少し簡単に作られています:
public function fooAction()
{
$param = $this->getRequest()->getCookie()->bar;
$this->getResponse()->getCookie()->baz = 'bat';
}
キープ念頭に置いてCookie
とSet-Cookie
ヘッダーはArrayObject
オブジェクトを実装しています。クッキーがリクエストに存在しているかどうかを確認するには、あなたがこれoffsetExists
を使用することができます。
if ($cookie->offsetExists('foo')) {
$param = $cookie->offsetGet('foo');
}
/更新:
クッキーのプロパティを変更したい場合は
は、あなたもここにSet-Cookie
ヘッダを変更しています。入手可能なすべての方法についてはat the class on Githubをご覧ください。 わずか要約:
$cookie = $this->getResponse()->getCookie();
$cookie->foo = 'bar';
$cookie->baz = 'bat';
$this->setDomain('www.example.com');
$this->setExpires(time()+60*60*24*30);
Cookieアクセス$this->getResponse()->getCookie()
作品を介したが、息切れ、長いと面倒です。だから私がやったことは、ResponseクラスとRequestクラスを拡張しました。ここではそれがどのように見える:
'service_manager' => array (
'factories' => array (
'Request' => 'Application\Mvc\Request\Factory',
'Response' => 'Application\Mvc\Response\Factory',
)
);
モジュール/アプリケーション/ SRC /アプリケーション/ MVC /リクエスト/ Factory.php
namespace Application\Mvc\Request;
use Zend\Console\Request as ConsoleRequest;
use Zend\Console\Console;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class Factory implements FactoryInterface
{
public function createService (ServiceLocatorInterface $serviceLocator)
{
if (Console::isConsole())
{
return new ConsoleRequest();
}
return new HttpRequest();
}
}
モジュール/アプリケーション/ SRC /アプリケーション/ MVC /リクエスト/ HttpRequest.php
namespace Application\Mvc\Request;
use Zend\Http\PhpEnvironment\Request;
class HttpRequest extends Request
{
public function hasCookie ($name)
{
assert ('is_string($name)');
$cookie = $this->getCookie();
if (empty ($cookie))
{
return false;
}
if (isset ($cookie [$name]))
{
return true;
}
return false;
}
public function cookie ($name, $default = null)
{
assert ('is_string($name)');
if ($this->hasCookie($name))
{
$cookie = $this->getCookie();
return $cookie [$name];
}
return $default;
}
}
モジュール/アプリケーション/ SRC /アプリケーション/ MVC /レスポンス/ Factory.php
namespace Application\Mvc\Response;
use Zend\Console\Response as ConsoleResponse;
use Zend\Console\Console;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class Factory implements FactoryInterface
{
public function createService (ServiceLocatorInterface $serviceLocator)
{
if (Console::isConsole())
{
return new ConsoleResponse();
}
return new HttpResponse();
}
}
モジュール/アプリケーション/ SRC /アプリケーション/ MVC /レスポンス/ HttpResponse.php
namespace Application\Mvc\Response;
use Zend\Http\PhpEnvironment\Response;
use Zend\Http\Header\SetCookie;
class HttpResponse extends Response
{
public function addCookie ($name, $value, $expires = null, $path = null, $domain = null, $secure = false, $httponly = false, $maxAge = null, $version = null)
{
$cookie = new SetCookie ($name, $value, $expires, $path, $domain, $secure, $httponly, $maxAge, $version);
$this->getHeaders()
->addHeader ($cookie);
}
}
は今、私はクッキーにはるかに簡単にアクセスできます。
$this->getRequest()->cookie ('ptime');
$this->getRequest()->cookie ('alarm', 'last');
と
$this->getResponse()->addCookie ('ptime', time());
- 1. Zend Frameworkクッキー管理
- 2. 概念
- 3. Zend Frameworkの2、
- 4. sqlite概念からcoredata概念へ?
- 5. インデックスアクセスの概念
- 6. プレーフレームワークの概念
- 7. メークファイルの概念
- 8. Zend Framework 2オートローディング
- 9. zend framework 2 AuthenticationService
- 10. Zend Framework 2 - filters
- 11. Zend Framework 2 LDAP
- 12. Zend Framework 2パートルートアセンブリ
- 13. Zend Framework 2リダイレクト
- 14. ピボットテーブルの概念
- 15. クラスの概念
- 16. 概念クラス図
- 17. Zend Frameworkの2ナビゲーションサブサブメニュー
- 18. Zend Frameworkの2 - URL
- 19. Zend Framework 2のキャッシング
- 20. Zend Framework 2のMultiSelect
- 21. Springの「インスタントリポジトリ」概念Hibernate JPA
- 22. C++の概念:CRTP
- 23. Nodejs Promiseの概念
- 24. UNIXブロックバッファキャッシュの概念
- 25. LInuxシグナルの概念
- 26. Infinityループスライダの概念
- 27. 概念:APIレベルテスト
- 28. Windowsワークフローランタイムの概念
- 29. クラスの概念SAPUI5
- 30. HTMLセキュリティの概念
ありがとうございました。しかし、どのように私は、クッキーの有効期限の時間、ドメイン名とクッキーのパスを設定することができます。 – 2plus
これに対して新しいSetCookieヘッダーを作成し、それを応答オブジェクトのヘッダーリストに割り当てることができます。例: '$ cookie = new SetCookie($ name、$ value、$ expires、$ path、$ domain、$ secure、$ httpOnly、$ maxAge、$ version); $ this-> getResponse() - > getHeaders() - > addHeader($ cookie); '。 –
@ 2plus私の編集を見て、私はすべての修飾子が利用できるSetCookieクラスにリンクしました。いくつかのセッターの短い例が私の答えに追加されています。 –