Внутри 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?
Я нашел решение. Это может быть неэффективно. Но это решает проблему на данный момент, так как никто не придумал никакого решения на данный момент. Если проверка не удалась. Я просто сбросил «#states» с поля. При этом видимые состояния не будут применены, а field_my_url будет отображаться как обычно.
unsert($form['field_my_url']['#states']);
Других решений пока нет …