
Cake4にて、GETリクエストの初期値を予めセットしておきたい、任意にセットしたい場合です。
Cake4: GETリクエストに値をセットする
if (empty($this->getRequest()->getQuery('hoge'))) {
$queryParams = $this->getRequest()->getQueryParams();
$queryParams['hoge'] = '新たに値をセットする';
$this->setRequest($this->getRequest()->withQueryParams($queryParams));
}
GETクエリパラメータの hoge が存在しない場合は、getQueryParams() を $queryParams 変数に代入し、任意の値を作成します。その後、withQueryParams()でリクエストオブジェクトを生成し、setRequest() でコントローラーオブジェクトを更新しています。
しかし、注意点としては、あくまでもリクエストオブジェクトを変更しているだけで、画面の操作などからクエリ文字列パラメーターの値を変更するわけではないということだと思います。
(内部でリクエストを操作するわけですから)あまり、利用するケースはないのかもですが、覚えておくと自由度は高まります。
■ Cake4: withQueryParams()
https://api.cakephp.org/4.4/class-Cake.Http.ServerRequest.html#withQueryParams()
■ Cake4: setRequest()
https://api.cakephp.org/4.4/class-Cake.Controller.Controller.html#setRequest()