Хорошо, зная, что это может быть немного поздно для ОП, я просто хочу добавить ответ в пользу тех, кто может наткнуться на это:)
Предполагается, что вы используете друпал 7:
$element['#name']
содержит имя элемента при условии, что у него есть имя. Он будет автоматически получать имя, если он будет обработан через drupal_get_form, и в этом случае он получает имя соответствующего элемента массива в исходном массиве формы. Также можно напрямую установить атрибут #name
, например,
$form['bbeditor_test'] = array(
'#type' => 'bbeditor',
'#name' => 'use-this-name',
// some more stuff ....
);
Часто имеет смысл повторно использовать обратный вызов _process
для настраиваемых полей, определенных для API полей Drupal (т.е. при определении полей с помощью hook_field_info и связанных хуков). В таких сценариях обратите внимание, что имя элемента содержится не в атрибуте #name
, а в атрибуте #field_name
.
Итак, предполагая, что process_bbeditor
также используется для полей API полей, мы получили бы что-то вроде:
function process_bbeditor($element, &$form_state,$form) {
// some stuff ...
$element_name = '';
if (isset($element['#name'])) {
$element_name = $element['#name'];
}
elseif (isset($element['#field_name'])) {
$element_name = $element['#field_name'];
}
else { // to handle the rare case when drupal_render is called directly on the parent array and #name isn't set
$element_name = 'undefined';
}
// some more stuff using $element_name ....
return $element;
}