Как показать поле после вызова validateForm () в Drupal 8?

Внутри hook_form_FORM_ID_alter() Функция Я показываю или скрываю поле, основанное на другом поле флажка, проверяется или нет с помощью следующего кода в Drupal 8.

$form['field_my_url']['#states'] = [
'visible' => [
':input[name="field_my_checkbox[value]"]' => ['checked' => TRUE],
],
];

В случае, если пользователь проверяет field_my_checkbox флажок, вводит неверный URL в field_my_url и решает снять галочку field_my_checkbox флажок, field_my_url будет скрыт с оставшимся недействительным URL. Проверка не пройдет, потому что введенный URL недействителен.

Затем пользователь будет перенаправлен обратно с сообщением об ошибке. Но потому что field_my_checkbox флажок не был отмечен, field_my_url поле будет скрыто с сообщением об ошибке, и пользователь не может видеть это.

В этом случае, как я могу показать field_my_url поле, если он не прошел проверку, потому что содержит недопустимый URL в Drupal 8?

0

Решение

Я нашел решение. Это может быть неэффективно. Но это решает проблему на данный момент, так как никто не придумал никакого решения на данный момент. Если проверка не удалась. Я просто сбросил «#states» с поля. При этом видимые состояния не будут применены, а field_my_url будет отображаться как обычно.

unsert($form['field_my_url']['#states']);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]