Nascondi o disabilita il campo dopo la registrazione


8

Ho 1 campo nella pagina di registrazione dell'utente che non deve essere modificato dopo la registrazione dell'account. Deve essere nascosto o disabilitato. Quale modulo può farlo?


Risposte:


4

Puoi provare il modulo Autorizzazioni campo

Caratteristiche

  • Abilita le autorizzazioni di campo su qualsiasi entità, non solo sui nodi.
  • Autorizzazioni di campo basate sul ruolo che consentono diversi schemi di visualizzazione in base all'accesso dell'utente.
  • Le autorizzazioni a livello di autore consentono la visualizzazione e la modifica dei campi in base a chi è il proprietario dell'entità.
  • Le autorizzazioni per ciascun campo non sono abilitate per impostazione predefinita. Al contrario, gli amministratori possono abilitare esplicitamente queste autorizzazioni per i campi in cui è necessaria questa funzionalità.

Come può distinguere tra creazione utente e modifica quando si trova nello stesso campo? Non sto dicendo che non posso, vorrei davvero sapere come. E immagino che anche OP lo farebbe.
Mołot,

Sarà un'autorizzazione sul campo basata sul ruolo, è necessario concedere l'autorizzazione solo per l'anonimo (non sono sicuro che questa condizione funzioni per il caso).
Bipin K,

8

Se vuoi farlo nel modulo personalizzato

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

Come può distinguere tra creazione e modifica dell'utente?
DRUPWAY,

2
@Smalution Non è necessario - per il modulo di registrazione sarebbe my_module_form_user_register_form_alter, no my_module_form_user_profile_form_alter.
Mołot,

1
hook è hook_form_FORM_ID_alter FORM_ID per la registrazione e la modifica è diversa
arpitr

Ok capito. Ho verificato quando l'utente registra il suo ID modulo "user-register-form" e quando l'utente modifica normalmente il suo ID modulo "user-profile-form".
DRUPWAY,

Sì, come previsto :)
arpitr

1

Prova con questo codice:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }

2
Si prega di aggiungere alcune parole di descrizione.
Mołot,

$ form ['field_name'] ['# disabled'] = TRUE; funziona anche.
Pinueve

1

Rendi la proprietà di visibilità del campo solo per utenti anonimi. Quindi il valore verrà archiviato al momento della registrazione. Quindi nessuno può accedere a quel campo. Una volta installato il modulo di autorizzazione sul campo, troverai questa opzione da applicare solo a utenti anonimi.


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

0

Prova a usare hook_form_alter, vedi l'esempio seguente:

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

inserisci questo codice in un modulo personalizzato, il campo sarà in grado di nuovi contenuti ma sarà disabilitato per modificarlo.

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

}

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.