アクションと関連するビューを備えた CakePHP コントローラーがあります。コントローラーのアクションは、呼び出されると、一部のデータをデータベースに保存します (新しいレコードを作成します)。何らかの理由で 2 つのレコードが作成されていることに気付きました。2 つのレコードの唯一の違いは、数秒異なる date_created フィールドであるため、最初のレコードの数秒後に 2 番目の (重複した) レコードが作成されていることがわかります。タグ内のビューに含まれている JavaScript に問題を絞り込むことができました。- を使用して、ビューの上部に .js ファイルを含めます。
echo $this->Html->script('https://link.to.externalSite.com/script.js', array(
'inline' => true
));
'inline' => true を false に変更すると、問題はなくなります。予想どおり、データベースにレコードが 1 つだけ追加されます。ただし、目的のためにスクリプトを inline => true に設定する必要があります。
次のように、フォームの送信ボタンがクリックされると、ビュー ページのタグがトリガーされます。
<script type="text/javascript" charset="utf-8">
var myVar = new .......... ({trigger: 'submitBtn'});
</script>
これは、スクリプトが外部 URL からロードされたために発生したのでしょうか? Webroot にスクリプトを含めると、この問題を回避できますか? コントローラー アクションが 2 回呼び出される原因となる JS スクリプトに関する同様の問題について、stackoverflow に関する質問に遭遇しました。彼らはディープリンクの問題について話していますが、それについて何をすべきかわかりません。