Вместо использования unset()
для скрытия элемента формы вы должны установить для свойства #access
значение FALSE
. Это сохраняет дерево построения формы без изменений, что позволяет избежать проблем, если другие модули пытаются получить доступ к этой информации или изменить ее. Источник
function MYMODULE_form_alter($form, $form_state, $form_id) {
global $user;
$account = $user;
if ($form_id == 'MYCONTENTTYPE_node_form') {
if (user_has_role(5, $account) && !user_has_role(3, $account)) {
if (empty($form_state['field']['args'][0]->title)) {
$form['field_body']['#access'] = FALSE;
}
}
}
}
Если это все еще не работает, дважды проверьте ваши if-запросы. Они действительно что-то делают? Вы вошли в систему как соответствующий пользователь?