2022-05-20

CakePHPのFormヘルパーでDeprecated(16384)エラーが表示される

PHPに関する記事

CakePHP2.6で運用されていたアプリケーションを流用して、新規でアプリケーションを構築することになりました。

本来、最新のフレームワークを導入すべきとは思いますが、社内からの利用オンリーで使用する期間が限定されたコンテンツだったこと。また、サイトの構造に大きく変更がないことから、ソースコード等を流用するため、あえて同じフレームワークの同一バージョンで進めることとしました。

同一のメジャーバージョン2.xの最新バージョンであれば影響はないだろうと考え、コピペで使える部分はそのまま流用していたのですが、お問合せフォームにおいて下記のようなエラーメッセージが表示されるようになりました。

Deprecated (16384): Using key `action` is deprecated, use `url` directly instead. [CORE\Cake\View\Helper\FormHelper.php, line 383]

要約すると、actionは非推奨なのでurlを使用すべきとのこと。
バージョンアップによる仕様変更による影響です。公式サイトにも記述がありました。

公式マニュアル
https://book.cakephp.org/2/ja/core-libraries/helpers/form.html
バージョン 2.8.0 で非推奨: $options[‘action’] オプションは、 2.8.0 で非推奨になりました。 代わりに $options[‘url’] と $options[‘id’] オプションを使用してください。

エラーメッセージとマニュアルに従い、キーの名前をactionからurlに変更すると、エラーメッセージが消えました。

変更前(キーの名前がactionと指定されている)
<?php echo $this->Form->create('Contact', array( 'action' => '#form', 'name' => '', 'novalidate' => true)); ?>

変更前(キーの名前をurlに変更)
<?php echo $this->Form->create('Contact', array( 'url' => '#form', 'name' => '', 'novalidate' => true)); ?>

ちなみに、出力されたソースコードを確認すると、生成されたフォームタグの属性はactionのままです。