Прежде чем спросить, погуглил, попробовал
написал несколько разных вариантов
<?php
function a_module_form_alter(&$form, &$form_state, $form_id) {
if($form_id =='user_profile_form'){
global $user;
$administrator = $user->roles[3];
$manager = $user->roles[5];
if(empty($administrator) && !empty($manager)){
$form['account']['mail']['#required'] = false;
//удаляет звездочку, но после того как нажму сохранить, ошибка все равно появится
}
}
}
function a_module_form_alter(&$form, &$form_state, $form_id) {
if($form_id =='user_profile_form'){
global $user;
$administrator = $user->roles[3];
$manager = $user->roles[5];
if(empty($administrator) && !empty($manager)){
$form['#validate'][]='a_module_form_validate';
}
}
}
function a_module_form_validate(&$form, &$form_state) {
$form['account']['mail']['#required'] = false;// не аботает
}
?>
после удаления mail возникает сообщение об ошибке
Комментарии
<?php
$administrator = $user->roles[3];
$manager = $user->roles[5];
?>
УЖС!
Нужно убрать стандартный валидатор и написать свой.
Попутно, решить все проблемы связанные с отсутствием E-mail'а (всяческие отправки писем, заполнение полей комментов и т.п.)
понятно что нужно убрать стандартную валидацию, это я и пытаюсь решить.
вопрос как?
http://php.net/manual/ru/function.unset.php
это первое что делал, unsetom удалил элемент, открываю форму, действительно поля нет, все нормально, пока не нажал на кнопку сохранить.
после этого все равно требует ввести e-mail, причем в то поле которого не существует
форму разпечатал, массива с mail не существует.
так пользователи и поля базовые, никаких преобразований не делал еще
Теряете нить. Мы о валидации.
Удаление поля мыла ничего не даст.
Optional mail
Это реально костыль с т.з. логики drupal.
Проще юзерам давать мыло типа
[uid]@Localhost