CakePHP4 での setTemplates で若干ハマったので記事として残しておきます。
CakePHP4+setTemplates で検索すると多くの文献では、
$this->Form->setTemplates([
'inputContainer' => '{{content}}',
'label' => false,
]);
のように不要なオプションを出力しない書き方として false にて指定していることが多く見つけられます。
が、これは型宣言があいまいなPHP8より前のPHPバージョンでのみ動く書き方で、型宣言が厳密になったPHP8以降では動作せず \src\View\StringTemplate.php でエラーがでます。
開発者に確認したら上記説明に加えて、setTemplatesで指定できるのは文字列のみじゃ、と怒られました。
なので
$this->Form->setTemplates([
'inputContainer' => '{{content}}',
'label' => '',
]);
と記述するのが正しいそうです。気持ち悪っ。。。
一方で、Form->control では
<?= $this->Form->control('name', ['label' => false, 'class' => 'form-select form-select-sm']) ?>
のようにフィールドセットに対してfalseで出力しない書き方が公式にあります。
https://book.cakephp.org/4/ja/views/helpers/form.html
setTemplates は本来この Form->control で出力されるタグに対するものなのですから、単純に考えたらそのまま記述移植するじゃないですか。
なので setTemplates でも false で記述してもいいようにしてほしかったですね!
環境:PHP8.2+Cake4.4.10