Ocultar ou desativar o campo após o registro

8

Eu tenho um campo na página de registro do usuário que não deve ser alterado após o registro da conta. Ele precisa estar oculto ou desabilitado. Qual módulo pode fazer isso?

Azz Kawa
fonte
related: drupal.org/node/374416
MOLOT

Respostas:

4

Você pode tentar o módulo de permissões de campo

Recursos

  • Habilite permissões de campo em qualquer entidade, não apenas em nós.
  • Permissões de campo baseadas em função que permitem diferentes visualizações padronizadas com base no acesso do usuário.
  • As permissões de autor permitem a visualização e edição de campos com base em quem é o proprietário da entidade.
  • As permissões para cada campo não são ativadas por padrão. Em vez disso, os administradores podem habilitar essas permissões explicitamente para os campos em que esse recurso é necessário.
Bipin K
fonte
Como ele pode diferenciar entre criação e edição de usuário quando é o mesmo campo? Eu não estou dizendo que não pode, eu realmente gostaria de saber como. E acho que o OP também.
Mołot 11/09/15
Será uma permissão de campo baseada em função, precisa dar permissão apenas para anônimo (não tenho certeza se essa condição funciona para o caso).
Bipin K
8

Se você quiser fazê-lo no módulo personalizado

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
fonte
Como ele pode diferenciar entre criação e edição de usuários?
DRUPWAY
2
@Smalution Você não precisa - para o formulário de registro seria my_module_form_user_register_form_alter, não my_module_form_user_profile_form_alter.
Mołot 11/09/2015
11
hook é hook_form_FORM_ID_alter FORM_ID para registro e edição é diferente
arpitr
OK, entendi. Eu verifiquei quando o usuário registra seu ID de formulário "user-register-form" e quando o usuário edita seu ID de formulário "user-profile-form" normalmente.
DRUPWAY
Sim, como se espera :)
arpitr
1

Tente com este código:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }
Adi
fonte
2
Por favor, adicione algumas palavras de descrição.
Mołot
$ form ['nome_do_campo'] ['# desativado'] = TRUE; também funciona.
pinueve
1

Torne a propriedade de visibilidade do campo apenas para usuários anônimos. Portanto, o valor será armazenado no momento do registro. Então ninguém pode acessar esse campo. Depois de instalar o módulo de permissão de campo, você encontrará essa opção para aplicar apenas a usuários anônimos.

Viraj
fonte
1
function module_form_alter(&$form_state, $form_id) {
 if (isset($form['title'])) {
    $form['title']['#required'] = FALSE;
    $form['title']['#type'] = 'value';
  }
}
mks
fonte
0

Tente usar hook_form_alter, veja o exemplo abaixo:

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;

      }
   }
Aradhya
fonte
0

coloque esse código em um módulo personalizado, o campo poderá entrar em novo conteúdo, mas será desativado para editá-lo.

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
fonte