web-dev-qa-db-ja.com

日付フィールドから「必須」ステータスを削除します

現在必須としてマークされているフィールドがあります。ただし、これは管理者以外のすべての役割に必要です。 hook_form_alter()を実装するモジュールを作成し、日付フィールド以外のすべてのフィールドに必要なステータスを削除できました。どの設定を変更する必要があるかわかりますか?

また、hook_form_alter()で変更したり、 '#after_build'で変更したりしました。そこにも運がありませんでした。

5
mikesir87

これは、単純な日付フィールドを使用するだけでなく、たとえば、日付モジュール。

カスタムhook_form_alterを実装するモジュールが最後に実行されることを確認する必要があります。このように、他のモジュールはそれを再び「必須」に戻すことができません。

さらに、いくつかのモジュールは、異なる「必須」をまとめて実装します。例えば。ビジネスロジック「開始日が設定されている場合、終了日も必要です」は、単純な「必須」フラグでは実装できませんが、そのフォームのhook_validationsで起動します。

これをオーバーライドするには、特定の検証を element_validate またはフォーム全体#validateから削除して、実行から除外する必要があります。

これらの元の検証を独自のコピーに置き換えて、醜い動作を変更しないようにすることができます。

3
berkes