

CakePHP Ver. 2.5.8 を利用しています。

公式のチュートリアルに沿って「[シンプルな認証と承認のアプリケーション](http://book.cakephp.org/2.0/ja/tutorials-
and-examples/blog-auth-example/auth.html)」をやってみました。

しかし、`FlashHelper` が、ないとエラーがでます。

[code]

    Missing Helper
    Error: FlashHelper could not be found.
    
    Error: Create the class FlashHelper below in file: app/View/Helper/FlashHelper.php 
    
    <?php
    class FlashHelper extends AppHelper {
    
    }
    
[/code]

このように、エラーがでます。

`app/View/Helper` のディレクトリまで移動して `ls` してみても  
`AppHelper.php` しかありません。

`lib/Controller/Component` の中には `FlashHelper.php` があります。

これはどう解釈したらいいのでしょうか。。。

質問の内容が不十分かもしれませんが、ヘルパーとコンポーネントまわりについて理解が足りていないのかもしれません。

ご回答お待ちしております。


CC BY-SA 3.0
2015-10-17T16:24:17.037
17757
2015-10-18T09:45:53.157
2015-10-18T09:34:33.657
8000
10741
question
php cakephp
Error: FlashHelper could not be found. と表示される


FlashComponent や FlashHelper が追加されたのは CakePHP 2.7 からのようです。

> ## CakePHP 2.7.0 がリリースされました
>
> ### 非推奨
>
>   * SessionComponent::setFlash() は非推奨になった。代わりに FlashComponent を使用する
>   * SessionHelper::flash() は非推奨になった。代わりに FlashHelper を使用する
>

>
> \--- <http://bakery.cakephp-users.jp/2015/07/14/cakephp_2_7_0_released/>
> より引用

それ以前のバージョンでは上記のように SessionComponent と SessionHelper
を使うようですが、このあたりの説明はセッションコンポーネントのマニュアルに書かれています。

[セッション — CakePHP Cookbook 2.x ドキュメント >
通知メッセージの作成](http://book.cakephp.org/2.0/ja/core-
libraries/components/sessions.html#creating-notification-messages)

* * *

> app/View/Helper のディレクトリまで移動して ls してみても AppHelper.php しかありません。

コンポーネントやヘルパは CakePHP 付属のもの以外にもユーザーが作成することができます。この自分で作った（アプリケーション独自の）ものを置く場所が
`app/` 以下なので、そこに `AppHelper.php` しかないのは特におかしなことではありません。本来あるべき場所は `lib/` の方です。

実際 Github で CakePHP 2.7.0 のファイルツリーを見てみると、

  * [`lib/Cake/Controller/Component/FlashComponent.php`](https://github.com/cakephp/cakephp/blob/2.7.0/lib/Cake/Controller/Component/FlashComponent.php)
  * [`lib/Cake/View/Helper/FlashHelper.php`](https://github.com/cakephp/cakephp/blob/2.7.0/lib/Cake/View/Helper/FlashHelper.php)

というファイルが存在します。なのでむしろ

> lib/Controller/Component の中には FlashHelper.php があります。

こっちの方が謎です。 2.5.8 のツリーに FlashHelper.php というファイルは見当たらないのですが・・・。


CC BY-SA 3.0
2015-10-18T09:33:49.487
17769
2015-10-18T09:45:53.157
2015-10-18T09:45:53.157
8000
8000
17757
answer