поле ошибка набора формы() не выделено красным


При проверке поля вручную из моей формы отображается ошибка, но поле не становится красным. В качестве первого параметра я использовал имя входного элемента. ДРУПАЛ 7

if($form_state['values']['panes']['webform_nid31'][0]['contact_person'] == '') {
    form_set_error('panes[webform_nid31][0][contact_person]', t('You must select a name for this group of settings.'));
  }
 2
Author: DD dev, 2013-07-05

1 answers

Если ваш элемент формы определен следующим образом:

$form['panes']['webform_nid31'][0]['contact_person'] = array( ... );

Ваш вызов form_set_error должен выглядеть так:

form_set_error('panes][webform_nid31][0][contact_person',
                t('You must select a name for this group of settings.'));

Вам нужно задать полный путь к элементу, без внешних [ и ]. У вас может быть много полей "contact_person" в одной форме, только в разных ветвях дерева форм. Использование только последнего индекса сделало бы ошибки настройки неоднозначными, поэтому он не поддерживается. По крайней мере, официально. Может работать, но только как недокументированная функция.

Форматирование этой строки описано в API:

Параметры

$имя: имя элемента формы. Если свойство #parents вашего элемента формы является массивом ('foo', 'bar', 'baz'), то вы можете установить ошибку на 'foo' или 'foo][bar][baz'. Установка ошибки в 'foo' устанавливает ошибку для каждого элемента, где массив #parents начинается с 'foo'.

И последнее, но не менее важное: фактический результат определяется в теме, он вполне может быть чем-то иным, чем красная граница, если автор темы так решил.

 7
Author: Mołot, 2020-06-15 09:13:00