読者です 読者をやめる 読者になる 読者になる
一人もくもく会 α verでサービス開始しました。

CakePHP3でのajaxを取得する場合

CakePHP3でajaxにてデータを取得する場合、
普通にテンプレートとアクションを作っても
何故かテンプレートがないと文句を言われた。

どうもajaxの場合は
Layout/ajax/default.ctp
を用意しなければならないらしい。
アクションテンプレート側も同様に
ajaxフォルダ以下に作らなくてはならない。

ちなみにアクション内では

$this->request->is('ajax')

ajaxかどうかを判断できる。

テストを作る場合には
下記のようにしてajaxの場合を再現できる。

$this->configRequest([
	'headers' => [
		'X-Requested-With' => 'XMLHttpRequest',
	],
]);

元々こんなことしなくても動いていた気がするのだが
開発中にアップデートされたのだろうか?
もしくは何か設定を変えたせいとかかもしれない。