CakePHP 4 のテンプレートで CSRF トークンを FomHelper を使わずに埋め込む

CakePHP 4 には FormHelper という仕組みがあります。これを使うとタグの記述量をかなり減らすことができるのですが、タグの構造が把握しづらくなるデメリットもあります。

手動で <form> タグなどを記述した場合、そのままPOST送信すると「Missing CSRF token body」のエラーが出ます。
(Cake\Http\Exception\InvalidCsrfTokenException が発生します)

これを解決するためには、テンプレートに下記のように追記すればOKです。

templates/Sample/index.php
<form method="post">
  ...
  <!-- ↓これを追加 -->
  <input
    type="hidden" name="_csrfToken" autocomplete="off"
    value="<?= $this->request->getAttribute('csrfToken') ?>">
  ...
</form>

今回は CakePHP 4.0.3 で試しています。CakePHP 3 とは異なるのでご注意ください。

CakePHP 3 での実装方法は「CakePHP 3 のテンプレートで FormHelper を使わずに、直接 CSRF トークンを埋め込む>」をご覧ください。