2

私のフックフォームの変更では、これは生年月日の配列です:

[Birthdate] => Array(
  [#type] => fieldset
  [#title] => Birthdate
  [#weight] => 1
  [profile_birthdate] => Array(
    [#type] => date
    [#title] => Birthdate
    [#default_value] =>
    [#description] => The content of this field is kept private and will not be shown publicly.
    [#required] => 1
  )
)

私が試してみました:

unset($form['Birthdate']['profile_birthdate']);
     unset($form['Birthdate']);

「有効な生年月日を入力してください」というメッセージがまだ表示されるため、それは機能しません。フィールドを非表示にし、メッセージを表示しないようにします。

4

1 に答える 1

2

エラー メッセージの言い回し ('... a valid date...') は、これがフォーム検証関数から発行されたことを示唆しています。記述方法によっては、フォームからフィールドを正常に削除した場合でも、フィールドを検証しようとする場合があります。

その場合は、生年月日フィールドを予期しないカスタム バージョンで検証関数をオーバーライドする必要があります (実装の内容を確認$form['#validate']してください)。hook_form_alter()または、フィールドを削除する代わりに、フィールドを'#type' => 'hidden'または'#type' => 'value'に変更して、検証に合格するデフォルト値を指定することもできますが、そうすると、偽の生年月日が割り当てられることになり、望ましくない場合があります。

于 2010-07-29T06:46:40.093 に答える