Cakephp PHP WEB開発

【Cakephp4】[UnexpectedValueException] Controller actions can only return ResponseInterface instance or null

※本サイトはPR表記を含みます。

Cake2 ではコントローラアクション内で string 型を返すことも可能でしたが、Cake4 ではそのままだとエラーになってしまいます。

Cake4: エラー内容

 error
error: [UnexpectedValueException] Controller actions can only return ResponseInterface instance or null. Got string instead.

訳: コントローラーのアクションは、ResponseInterface インスタンスまたは null のみを返すことができます。代わりに文字列を取得しました。

ということで、下記例です。

Cake2: コントローラー内でもstring型を返すことができていた

// クラスメソッド内
return 'hogefuga';

Cake2では上記のように単に文字列を返すことも可能でした。

Cake4: コントローラー内ではResponseInterfaceとして返す

return $this->response->withStringBody('hogefuga');

Cake4ではコントローラーのメソッド内ではレスポンスインターフェイスか、null、何も返さない(void)というルールがあるので、レスポンスオブジェクトの withStringBody() で文字列をセットすることで対応できます。AJAX通信など、成功時に JSON形式でデータ返したりといった場合などに利用できると思います。

-Cakephp, PHP, WEB開発
-