質問: CakePHP Ver. 2.5.8 を利用しています。 公式のチュートリアルに沿って「シンプルな認証と承認のアプリケーション」をやってみました。 しかし、`FlashHelper` が、ないとエラーがでます。 ``` Missing Helper Error: FlashHelper could not be found. Error: Create the class FlashHelper below in file: app/View/Helper/FlashHelper.php
回答: FlashComponent や FlashHelper が追加されたのは CakePHP 2.7 からのようです。 > > CakePHP 2.7.0 がリリースされました > ------------------------ > > > ### 非推奨 > > > * SessionComponent::setFlash() は非推奨になった。代わりに FlashComponent を使用する > * SessionHelper::flash() は非推奨になった。代わりに FlashHelper を使用する > > > --- より引用 > > > それ以前のバージョンでは上記のように SessionComponent と SessionHelper を使うようですが、このあたりの説明はセッションコンポーネントのマニュアルに書かれています。 セッション — CakePHP Cookbook 2.x ドキュメント > 通知メッセージの作成 > > app/View/Helper のディレクトリまで移動して ls してみても AppHelper.php しかありません。 > > > コンポーネントやヘルパは CakePHP 付属のもの以外にもユーザーが作成することができます。この自分で作った(アプリケーション独自の)ものを置く場所が `app/` 以下なので、そこに `AppHelper.php` しかないのは特におかしなことではありません。本来あるべき場所は `lib/` の方です。 実際 Github で CakePHP 2.7.0 のファイルツリーを見てみると、 * `lib/Cake/Controller/Component/FlashComponent.php` * `lib/Cake/View/Helper/FlashHelper.php` というファイルが存在します。なのでむしろ > > lib/Controller/Component の中には FlashHelper.php があります。 > > > こっちの方が謎です。 2.5.8 のツリーに FlashHelper.php というファイルは見当たらないのですが・・・。