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()