Как скрыть поле даты рождения в переопределенной форме?

В моей форме крючка alter это массив дат рождения:

[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']);

и это не работает, так как я все еще получаю сообщение "Пожалуйста, введите правильную дату рождения". Я хочу, чтобы поле было скрыто, а сообщения нет.

1 ответ

Решение

Фраза сообщения об ошибке ("... действительная дата...") намекает на то, что оно выдается из функции проверки формы. В зависимости от того, как это написано, он все равно может попытаться проверить поле, даже если вы успешно удалили его из формы.

Если это так, вам нужно либо переопределить функцию проверки пользовательской версией, которая не ожидает поле даты рождения (проверьте содержимое $form['#validate'] в вашем hook_form_alter() реализация). Кроме того, вместо удаления поля, вы можете превратить его в '#type' => 'hidden' или же '#type' => 'value'и предоставьте значение по умолчанию, которое проходит проверку, но тогда вы в конечном итоге назначите фиктивные даты рождения, которые могут не соответствовать вашим ожиданиям.

Другие вопросы по тегам