データベースに登録しないただのフォームを作成し、submitボタンクリックするとエラー表示した。

Unexpected field 'code.0.data.key' in POST data
CORE\src\Controller\Component\SecurityComponent.php

データベースを利用することが想定されている作りだと思うこのcakePHP、そのためViewとController以外にModelもちゃんと作っておく必要はあるのかな?

cakePHP2では、データベース使いませんよという設定があるようだけど、cakePHP3ではそれが出来ない様子。

確かに調べると、Formをカスタムしてそれを読み込むやらなんやら面倒なことしなければなさそうなcakePHP3。

しかし、あるサイトではcakePHP3は特に何もしなくてよいという情報も。また、あるサイトではFormにenctypeがないとか。そして、あるサイトではセキュリティでCSRF有効だからとか。

なかなか定まらない。これは他が悪いとかいうものではなく、自分がやりたいことに当てはまる情報がなかなか見つからないだけ。

で、最終的にはセキュリティーを切っちゃえばいいのでは?という結論。なんせ、登録するものがないわけで。

ということで以下のソースとなりました。

public function initialize(): void
{
 parent::initialize();
 $this->loadComponent('Security'); // 追加
}

public function beforeFilter(EventInterface $event)
{
 parent::beforeFilter($event);
 $this->Security->setConfig('unlockedActions', ['action']); // 許可するアクション
}