View::extend()についてサブディレクトリやプラグインで使った時の挙動がよくわからなかったので、実際に動かして見ました。
環境
- CakePHP2.3.6
結果
View Type
カレントViewファイルのViewタイプによりベースディレクトリが異なります。カレントファイルがElementの場合はElements, Layoutの場合はLayouts内のファイルを指定することができます。
- Element (Views/Elements)
- Layout (Views/Layouts)
- View (Views/[Current viewPath] e.g. Views/Posts)
カレントファイルがサブディレクトリ内にあるときは、同一ディレクトリ内のファイルではなく、それぞれのベースディレクトリからの指定になります。例えば、Views/Posts/Sub/common.ctpでViews/Posts/Sub/parent.ctpを使いたければ、‘Sub/parent’と指定する必要があります。
ベースディレクトリをViews/にしたい場合は“/”から始めます。 e.g. ‘/Posts/Sub/parent’
プラグイン内では
プラグイン内で使う場合はベースディレクトリがプラグインのView内のものになります。i.e. app/Plugin/PluginName/Views/(Elements | Layouts | viewPath)