как сделать поле e-mail у пользователя необязательным?

Главные вкладки

Аватар пользователя engenes engenes 20 ноября 2017 в 19:29

Прежде чем спросить, погуглил, попробовал
написал несколько разных вариантов

<?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 возникает сообщение об ошибке

Комментарии

Аватар пользователя bumble bumble 20 ноября 2017 в 21:04
<?php
$administrator 
$user->roles[3];
        
$manager $user->roles[5];
?>

УЖС!

engenes wrote:

как сделать поле e-mail у пользователя необязательным?

Нужно убрать стандартный валидатор и написать свой.
Попутно, решить все проблемы связанные с отсутствием E-mail'а (всяческие отправки писем, заполнение полей комментов и т.п.)

Аватар пользователя engenes engenes 22 ноября 2017 в 16:32

это первое что делал, unsetom удалил элемент, открываю форму, действительно поля нет, все нормально, пока не нажал на кнопку сохранить.
после этого все равно требует ввести e-mail, причем в то поле которого не существует
форму разпечатал, массива с mail не существует.
так пользователи и поля базовые, никаких преобразований не делал еще

Аватар пользователя Andruxa Andruxa 20 ноября 2017 в 22:39

Optional mail

This module must be used in very specific cases. Consequently, it might possibly cause problems with some Drupal features, such as the user's personal contact form and the e-mail checking of new user accounts (this feature is disabled by this module, by the way).

Это реально костыль с т.з. логики drupal.