カスタムフォームを作成しています(フィールドは_drupal_render
_を使用して追加されます)が、すべてのWebフォームでハニーポットが有効になっているため、フォームを送信すると、次のメッセージが表示されます。
フォームの送信に問題がありました。 X秒待ってから再試行してください。
これは、ハニーポットのマークアップがカスタムフォームに含まれていないためです。
2つのオプションがあります。
drupal_render
_ sを使用)。ハニーポットのドキュメントはとても貧弱なので、次の方法でハニーポットのマークアップを手動で追加しようとしました:<?php print drupal_render($form['honeypot_time']); ?> <?php print drupal_render($form['url']); ?>
実際にはマークアップが追加されますが、まだ修正されていません。
モジュールのドキュメント によると、これを行うことができます:
ハニーポットを独自のフォーム、または独自のモジュールのhook_form_alterを介して任意のフォームに追加する場合は、次の関数呼び出しをフォームビルダー関数内(またはhook_form_alter内)に配置するだけです。
<?php
honeypot_add_form_protection($form, $form_state, array('honeypot', 'time_restriction'));
?>
配列にオプションを含めるか含めないことにより、ハニーポットフィールドまたはフォームの時間制限を有効または無効にできることに注意してください。
HoneypotのAPI を使用して、フォームの遅延時間を変更したり、特定のフォームの保護を追加または削除したりすることもできます。