Feld nach der Registrierung ausblenden oder deaktivieren

8

Ich habe 1 Feld auf der Benutzerregistrierungsseite, das nach der Kontoregistrierung nicht geändert werden sollte. Es muss ausgeblendet oder deaktiviert sein. Welches Modul kann das?

Azz Kawa
quelle
Verwandte: drupal.org/node/374416
Mołot

Antworten:

4

Sie können versuchen , Feld Berechtigungen Modul

Eigenschaften

  • Aktivieren Sie Feldberechtigungen für jede Entität, nicht nur für Knoten.
  • Rollenbasierte Feldberechtigungen, die je nach Zugriff des Benutzers unterschiedliche Anzeigemuster ermöglichen.
  • Berechtigungen auf Autorenebene ermöglichen das Anzeigen und Bearbeiten von Feldern basierend darauf, wer der Entitätseigentümer ist.
  • Berechtigungen für jedes Feld sind standardmäßig nicht aktiviert. Stattdessen können Administratoren diese Berechtigungen explizit für die Felder aktivieren, in denen diese Funktion benötigt wird.
Bipin K.
quelle
Wie kann zwischen Benutzererstellung und -bearbeitung unterschieden werden, wenn es sich um dasselbe Feld handelt? Ich sage nicht, dass es nicht geht, ich würde wirklich gerne wissen wie. Und ich denke, OP würde auch.
Mołot
Es handelt sich um eine rollenbasierte Feldberechtigung, die nur für anonyme Berechtigungen erteilt werden muss (nicht sicher, ob diese Bedingung für den Fall funktioniert).
Bipin K
8

Wenn Sie dies in einem benutzerdefinierten Modul tun möchten

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
quelle
Wie kann zwischen Benutzererstellung und -bearbeitung unterschieden werden?
DRUPWAY
2
@Smalution Sie müssen nicht - für das Anmeldeformular wäre es my_module_form_user_register_form_alternicht my_module_form_user_profile_form_alter.
Mołot
1
hook is hook_form_FORM_ID_alter FORM_ID für die Registrierung und Bearbeitung ist diefferent
arpitr
OK habe es. Ich habe überprüft, wann der Benutzer seine Formular-ID "Benutzerregister-Formular" registriert und wann der Benutzer seine Formular-ID "Benutzer-Profil-Formular" normal bearbeitet.
DRUPWAY
Ja, wie erwartet :)
Arpitr
1

Versuchen Sie es mit diesem Code:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }
Adi
quelle
2
Bitte fügen Sie einige beschreibende Wörter hinzu.
Mołot
$ form ['field_name'] ['# disabled'] = TRUE; funktioniert auch.
Pinueve
1

Legen Sie die Eigenschaft für die Sichtbarkeit von Feldern nur für anonyme Benutzer fest. Der Wert wird also zum Zeitpunkt der Registrierung gespeichert. Dann kann niemand auf dieses Feld zugreifen. Sobald Sie das Feldberechtigungsmodul installiert haben, wird diese Option nur für anonyme Benutzer angewendet.

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

Versuchen Sie es mit hook_form_alter, siehe folgendes Beispiel:

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
quelle
0

Platzieren Sie diesen Code in einem benutzerdefinierten Modul. Das Feld kann neue Inhalte enthalten, ist jedoch deaktiviert, um sie zu bearbeiten.

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
quelle