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?


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.

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;
}

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;
  }

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.


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

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;

      }
   }

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;
}

}

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.