[CakePHP]elementの*.ctpファイルには関数を書けない

CakePHPにはviewの中で共通仕様するパーツをelementとして定義できるがこの中で、phpのfunctionを書くとエラーになる。

elementのctpファイルは、最終的にViewクラス内の_render()で読み込まれるが、この時include()を使っている。

cake/libs/view/view.php

class View extends Object {
	function _render($___viewFn, $___dataForView, $loadHelpers = true, $cached = false) {
		...
		if (Configure::read() > 0) {
			include ($___viewFn);				//  $___viewFn = "xxxxx.ctp"
		} else {
			@include ($___viewFn);
		}
 
	}
}



なので、同じctpファイルを2回includeされると、”同名の関数が複数回定義されている”とのエラーが出てしまう。

関連記事

コメントを残す

メールアドレスが公開されることはありません。