CakePHP4でコンポーネントからコントローラーとリクエストを呼び出せなくて、悩んだのでメモ
結論
以下のように書く。
class SampleComponent extends Component {
private $controller;
private $request;
public function beforeFilter()
{
$this->controller = $this->getController();
$this->request = $this->controller->getRequest();
}
}
ちなみに以下は、ダメだった
class SampleComponent extends Component {
private $controller;
private $request;
public function beforeFilter()
{
$this->controller = $this->getController();
// Controllerクラスの$requestプロパティはproctedなので、アクセスできない
$this->request = $this->controller->request;
}
}
補足
公式ドキュメントには書いてなかったので、ちょっと苦労した、、
CakePHP4ので入っているRequestHandlerComponentのソースコードを読んだらわかった。ソースコードをちゃんと読むのは大切ですね。