Скрыть или отключить поле после регистрации

8

У меня есть 1 поле на странице регистрации пользователя, которое нельзя изменить после регистрации аккаунта. Это должно быть скрыто или отключено. Какой модуль может это сделать?

Азз Кава
источник
связанные: drupal.org/node/374416
Молот

Ответы:

4

Вы можете попробовать Field Permissions Module

особенности

  • Включите права доступа к полям для любого объекта, а не только для узлов.
  • Полевые разрешения на основе ролей, позволяющие различать шаблоны просмотра в зависимости от того, какой доступ имеет пользователь.
  • Права на уровне автора позволяют просматривать и редактировать поля в зависимости от того, кто является владельцем объекта.
  • Разрешения для каждого поля не включены по умолчанию. Вместо этого администраторы могут явно включить эти разрешения для полей, где требуется эта функция.
Бипин К
источник
Как он может различать создание и редактирование пользователя, если это одно и то же поле? Я не говорю, что не может, я искренне хотел бы знать, как. И я думаю, что 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;
}
arpitr
источник
Как можно различить создание и редактирование пользователя?
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;
  }
Adi
источник
2
Пожалуйста, добавьте несколько слов описания.
Молот
$ form ['field_name'] ['# disabled'] = TRUE; тоже работает.
Пинев
1

Сделать свойство видимости поля только для анонимных пользователей. Таким образом, значение будет храниться во время регистрации. Тогда никто не сможет получить доступ к этому полю. После установки модуля разрешения полей вы обнаружите, что эта опция применима только к анонимному пользователю.

Viraj
источник
1
function module_form_alter(&$form_state, $form_id) {
 if (isset($form['title'])) {
    $form['title']['#required'] = FALSE;
    $form['title']['#type'] = 'value';
  }
}
MKS
источник
0

Попробуйте использовать hook_form_alter, см. Пример ниже:

function MODULENAME_form_alter(&$form_state, $form_id){
      global $user;
      //$form_id :: user detail edit form id
      if($user->uid != 0 && $form_id == "required_form_id"){
         //$field :: requied field name
          $form[$field]['#access'] = FALSE;

      }
   }
арадхйа
источник
0

Поместите этот код в пользовательский модуль, поле будет доступно для нового контента, но будет отключено для его редактирования.

if ($form_id == 'YOUR_FORM_ID') {
//dsm($form);

// for user form use '#user' instead of '#node' and uid instead of nid
if (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;
}

}

pinueve
источник