コンポーネントでセッションを利用する方法を検索して、
いろんな記事を参考に試してみたが、どれも上手くいかなかった。。。
辛抱強く調べてみるとバージョン3.6以降ではセッションオブジェクトの呼び出し方法が変わっていることが、上手くいかない原因のようでした。(レシピブックにもちゃんと書かれていました。。。詳しくはこちら)
3.6以降でコンポーネントでセッションを利用する方法を紹介させていただきます。
##CakePHP3.6以降
SampleComponent.php
namespace App\Controller\Component;
use Cake\Controller\Component;
/**
* Common component
*/
class SampleComponent extends Component
{
protected $_defaultConfig = [];
public function initialize(array $config)
{
parent::initialize($config);
$this->controller = $this->_registry->getController();
$this->session = $this->controller->getRequest()->getSession();
}
public function testWrite()
{
$this->session->write('test', 'test');
}
public function testRead()
{
$this->session->read('test');
}
}
ご参考になれば幸いです!