はじめに
CakePHP初心者です。
やりたいこと
あるページに到達した時点でCookieにそのことを書き込み、保持しておきたい。
(※永久に情報が残らないなどの部分は考慮しません)
やったこと
CakePHP3の公式(https://book.cakephp.org/3.0/ja/controllers/request-response.html#request-cookies)を参考に以下のコード書きましたが、
別コントローラに移動したときにCookieの情報が保持されていませんでした。
なお、CakePHPは3.5.0を利用しています。
コントローラーのメソッド内(例として「FinishController」とします。)
もちろんuse Cake\Http\Cookie\Cookie;
及びuse Cake\Http\Cookie\CookieCollection;
を行っております。
php
1public function finish() 2 { 3 $this->viewBuilder()->layout('finish'); 4 5 // 完了たというCookie情報作成 6 $cookie = new Cookie( 7 'IS_FINISH', 8 'TRUE', 9 new \DateTime('+1 year'), 10 '/' 11 ); 12 13 $cookies = new CookieCollection([$cookie]); 14 $cookies = $cookies->add($cookie); 15 16 }
なお、一番最後の$cookiesをdebugすると以下のように表示されているので書き込めている気がします。
object(Cake\Http\Cookie\CookieCollection) { [protected] cookies => [ 'is_finish;;/' => object(Cake\Http\Cookie\Cookie) { [protected] name => 'IS_FINISH' [protected] value => 'TRUE' [protected] isExpanded => false [protected] expiresAt => object(DateTime) { date => '2019-04-10 07:54:54.000000' timezone_type => (int) 2 timezone => 'GMT' } [protected] path => '/' [protected] domain => '' [protected] secure => false [protected] httpOnly => false } ] }
表示されたページのリンクを踏み、別ページのコントローラー(例としてMypageControllerとします。)に移動。
もちろんuse Cake\Http\Cookie\Cookie;
を行っております。
php
1public function index() { 2 $isFinish = $this->request->getCookie('IS_FINISH'); 3 debug($isFinish); # null 4 die; 5}
ここで、null
が返ってきます。
これは、なぜなのでしょうか?
私のやり方が間違っているのでしょうか?
もし間違っていたら、その方法をご教示いただけますと幸いです。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/10 08:18 編集