У меня есть 1 поле на странице регистрации пользователя, которое нельзя изменить после регистрации аккаунта. Это должно быть скрыто или отключено. Какой модуль может это сделать?
Включите права доступа к полям для любого объекта, а не только для узлов.
Полевые разрешения на основе ролей, позволяющие различать шаблоны просмотра в зависимости от того, какой доступ имеет пользователь.
Права на уровне автора позволяют просматривать и редактировать поля в зависимости от того, кто является владельцем объекта.
Разрешения для каждого поля не включены по умолчанию. Вместо этого администраторы могут явно включить эти разрешения для полей, где требуется эта функция.
Как он может различать создание и редактирование пользователя, если это одно и то же поле? Я не говорю, что не может, я искренне хотел бы знать, как. И я думаю, что OP тоже.
Молот
Это будет разрешение поля на основе ролей, необходимо давать разрешение только для анонимных пользователей (не уверен, будет ли это условие работать в данном случае).
Бипин К
8
Если вы хотите сделать это в пользовательском модуле
my_module_form_user_profile_form_alter(&$form,&$form_state){// Since it is on registration form, field might be reqruied.
$form['your_field']['#required']= FALSE;
$form['your_field']['#access']= FALSE;}
Как можно различить создание и редактирование пользователя?
DRUPWAY
2
@Smalution Вам не нужно - для регистрации это было бы my_module_form_user_register_form_alterне так my_module_form_user_profile_form_alter.
Молот
1
hook is hook_form_FORM_ID_alter FORM_ID для регистрации и редактирования неэффективен
arpitr
Хорошо понял. Я проверил, когда пользователь регистрирует свой идентификатор формы "user-register-form" и когда пользователь редактирует свой идентификатор формы "user-profile-form" как обычно.
DRUPWAY
Да, как и ожидалось :)
arpitr 11.09.15
1
Попробуйте с этим кодом:
function MODULENAME_form_alter(&$form_state, $form_id){
$form[$field]['#access']= FALSE;
$form[$field]['#disabled']= TRUE;}
$ form ['field_name'] ['# disabled'] = TRUE; тоже работает.
Пинев
1
Сделать свойство видимости поля только для анонимных пользователей. Таким образом, значение будет храниться во время регистрации. Тогда никто не сможет получить доступ к этому полю. После установки модуля разрешения полей вы обнаружите, что эта опция применима только к анонимному пользователю.
Попробуйте использовать hook_form_alter, см. Пример ниже:
function MODULENAME_form_alter(&$form_state, $form_id){global $user;//$form_id :: user detail edit form idif($user->uid !=0&& $form_id =="required_form_id"){//$field :: requied field name
$form[$field]['#access']= FALSE;}}
Поместите этот код в пользовательский модуль, поле будет доступно для нового контента, но будет отключено для его редактирования.
if($form_id =='YOUR_FORM_ID'){//dsm($form);// for user form use '#user' instead of '#node' and uid instead of nidif(isset($form['#node'])&& isset($form['#node']->nid)){// Prevent editing a field once the node has been created// hiding the field entirely on the edit form.
$form['field_name']['#access']= FALSE;// disable update field on the edit form (gray color).
$form['field_name']['#disabled']= TRUE;}
Ответы:
Вы можете попробовать Field Permissions Module
источник
Если вы хотите сделать это в пользовательском модуле
источник
my_module_form_user_register_form_alter
не такmy_module_form_user_profile_form_alter
.Попробуйте с этим кодом:
источник
Сделать свойство видимости поля только для анонимных пользователей. Таким образом, значение будет храниться во время регистрации. Тогда никто не сможет получить доступ к этому полю. После установки модуля разрешения полей вы обнаружите, что эта опция применима только к анонимному пользователю.
источник
источник
Попробуйте использовать
hook_form_alter
, см. Пример ниже:источник
Поместите этот код в пользовательский модуль, поле будет доступно для нового контента, но будет отключено для его редактирования.
}
источник