Cookie の保存
ユーザのブラウザに Cookie を送信する準備が整いました。
重要な作業は %response オブジェクトの SetCookie メソッドによって実行されます。これまで使用してきた %session オブジェクトや %request オブジェクトと同様、%response は Caché から自動的に提供されます。Caché は、実際のコンテンツではなく、ブラウザへのサーバの応答を制御します。
ここでは、Cookie に CacheCinemaLastCategory という名前を付けました。さらに、ユーザが注文した映画の FilmCategory オブジェクト ID を示す値、変数 Expires で指定された有効期限、およびこの Cookie をサイトの全 Web ページで使用できるようにする “/” パス情報を、この Cookie に指定します。
—TicketConfirm.OnPreHTTP—
TicketConfirm.OnPreHTTP
ClassMethod OnPreHTTP() As %Boolean
{
If $data(%session.Data("Order")) {
Set ord = ##class(Cinema.TicketOrder).%OpenId(%session.Data("Order"))
Set itm = ord.Items.GetAt(1)
Set cat = itm.Show.Film.Category.%Id()
// Put a cookie on the users computer
Set Expires = +$H + 7
Set Expires = $ZD(Expires,11) _ ", " _ $ZD(Expires,2) _ " 00:00:00 GMT"
Do %response.SetCookie("CacheCinemaLastCategory", cat, Expires, "/")
}
Quit 1
}