Dies hat mich eine Weile beunruhigt. Wenn ich versuche, Felder wie das Gruppenzielgruppenfeld oder die Veröffentlichungseinstellung aus einem Formular auszublenden, hat das Formular bei der Validierung beide Felder auf einen Nullwert gesetzt, obwohl der Standardwert als wurde korrekt deklariert.
Ich habe versucht, Invisible, #access, unset hidden nichts zu verwenden! Dies ist sehr problematisch, da Benutzer in meinem aktuellen Projekt nur kleine Teile ihres Profils bearbeiten können, z. B. nur die Adresse oder das Bild. Wenn ich also die Gruppenpublikum verstecke, wird der Benutzer aus den Gruppen geworfen, zu denen er gehört bearbeiten.
Am Ende habe ich den folgenden Code verwendet, um diese Felder auszublenden, während der Benutzer weiterhin in seiner Gruppe bleibt.
$variables['user_edit_about']['group_audience']= $temp['group_audience'];
$variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">';
$variables['user_edit_about']['group_audience']['#suffix'] = '</div>';
Würde sich jemand einen besseren Weg vorstellen, um dies zu erreichen?
Vielen Dank
quelle
Antworten:
Bearbeiten:
Ok, ich habe es herausgefunden. Fügen Sie dies in Ihr benutzerdefiniertes Modul ein:
Dadurch wird der Titel des Story-Knotens auf "Hot Stuff" gesetzt und NICHT auf der Seite gerendert, da #access = FALSE;
Sie können mehr granularity control in hook_form_alter () wie hinzufügen
Dies funktioniert für Drupal 6 & 7.
Alte Antwort (ignorieren):
Es ist schon eine Weile her, dass ich so etwas gemacht habe, also kann ich es falsch machen. Wenn Sie das
[#value]
Formularelement festlegen , wird es im Formular nicht angezeigt.Ich habe dies in Drupal 6
hook_form_alter()
in einem benutzerdefinierten Modul getan . Ich weiß nicht, ob es in Drupal 7 funktioniert, und ich weiß nicht, ob Sie es in einer Vorverarbeitungsfunktion tun könnenquelle
Sie können dem Formularelement auch einfach die CSS-Klasse 'element-hidden' hinzufügen
Wie bereits von iStryker erwähnt, ist es weiterhin möglich, den Wert durch DOM-Manipulation zu ändern. Dies ist jedoch eine schöne und einfache Möglichkeit, ein Formularfeld (oder ein anderes Renderelement) auszublenden. Die
element-hidden
Klasse ist definiert insystem.base.css
.quelle