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?
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;}
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.
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 idif($user->uid !=0&& $form_id =="required_form_id"){//$field :: requied field name
$form[$field]['#access']= FALSE;}}
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 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;}
Respostas:
Você pode tentar o módulo de permissões de campo
fonte
Se você quiser fazê-lo no módulo personalizado
fonte
my_module_form_user_register_form_alter
, nãomy_module_form_user_profile_form_alter
.Tente com este código:
fonte
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.
fonte
fonte
Tente usar
hook_form_alter
, veja o exemplo abaixo:fonte
coloque esse código em um módulo personalizado, o campo poderá entrar em novo conteúdo, mas será desativado para editá-lo.
}
fonte