Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

Pflichtfeld in Abhängigkeit von Rolle

Eingetragen von bjacob@drupal.org (58)
am 03.01.2008 - 14:30 Uhr in
  • Views
  • Drupal 5.x

Hallo Leute,

ich möchte gerne mit Hilfe des CCK ein Feld anlegen, dass in Abhängigkeit von der Nutzerrolle ein Pflichtfeld ist. Bis jetzt habe ich für diese Aufgabe noch kein Modul gefunden und habe selber Hand angelegt:
1. Feld "phone" erstellt, kein Pflichtfeld
2. Feld "phone_0" erstellt, Pflichtfeld
3. in meine .tpl.php Datei folgenden Code eingefügt:

<?php
global $user;

if (in_array('ROLLE',$user->roles)) {
  print drupal_render($form['group']['field_phone']);
} else {
  print drupal_render($form['group']['field_phone_0']);
}

Die Anzeige klappt, d.h. je nach Rolle wird entweder das Pflichtfeld oder das optionale Feld angezeigt. Beim Preview des Knotens wird aber stets die Fehlermeldung gebracht, das das Feld "Phone" (phone) benötigt wird. Also habe ich es mit

unset($form['group']['field_phone_0']);

versucht - kein Erfolg. Die Meldung wird weiterhin gebracht.

Hat jemand eine Idee, wie ich das Problem lösen kann?

Grüße
Björn

‹ Nur ein Bild pro Zeile in table view anzeigen (cck,imagefield,imagecache,views) Wie definiere ich den Titel einer node mit einem Feld vor? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Workflow Required Fields

Eingetragen von traxer (1009)
am 03.01.2008 - 17:06 Uhr
bjacob@drupal.org schrieb

ich möchte gerne mit Hilfe des CCK ein Feld anlegen, dass in Abhängigkeit von der Nutzerrolle ein Pflichtfeld ist. [...] Hat jemand eine Idee, wie ich das Problem lösen kann?

Das Modul Workflow Required Fields macht Felder zu Pflichtfeldern, abhängig von dem Zustand im Workflow. Das trifft zwar nicht genau deine Anforderungen, lässt sich aber gut als Basis für eine Eigenentwicklung nehmen.

Der Konfigurationsdialog müsste überarbeitet werden und die Formularänderungen müssten die neue Konfiguration nutzen.

Die Beta1 hat noch Fehler, die aber nur im Zusammenhang mit Workflow zum Tragen kommen. Eine neue Version erscheint heute.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo traxer, danke für

Eingetragen von bjacob@drupal.org (58)
am 07.01.2008 - 11:46 Uhr

Hallo traxer,
danke für deinen Beitrag und dein Modul. Das klingt nach ner Menge Arbeit. Was mich wundert ist, dass ich das besagte Pflichtfeld nicht einfach mit unset() deaktivieren kann. Wieso geht das nicht? Was habe ich da falsch verstanden?
Viele Grüße
Björn

  • Anmelden oder Registrieren um Kommentare zu schreiben

Verwende hook_form_alter

Eingetragen von traxer (1009)
am 08.01.2008 - 15:28 Uhr
bjacob@drupal.org schrieb

Was mich wundert ist, dass ich das besagte Pflichtfeld nicht einfach mit unset() deaktivieren kann.

Das hängt damit zusammen, wie Drupal Formulare verarbeitet. Die verantwortliche Funktion drupal_get_form wird im Zuge der Formularverarbeitung zwei mal aufgerufen:

  1. Wenn das Formular dargestellt werden soll.
  2. Wenn das Formular ausgefüllt und abgesendet wurde.

Wenn du im Theme (oder sonstwo an falscher Stelle) Formularelemente manipulierst, dann hat das keinen Einfluss auf das Formular an sich (also auch keinen Einfluss auf Validierung).

Die richtige Stelle, Formulare zu manipulieren, ist eine Implementierung von hook_form_alter.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo auch, ich habe nun ein

Eingetragen von bjacob@drupal.org (58)
am 14.01.2008 - 14:27 Uhr

Hallo auch,

ich habe nun ein eigenes Modul erstellt und versucht, dass Formular via den Hook form_alter zu manipulieren. Irgendwie klappt es immer noch nicht so richtig. Gibt es noch andere Elemente, die vor meinem Modul Vorrang haben und so das unset() verhindern? Bspw. von Seiten CCK? Das komische ist, dass meine Manipulation bzgl. og funktioniert (und für CCK Felder nicht).

Mein Modul sieht so aus (und funktioniert in dem Sinne, dass es das richtige Formular anspricht):

<?php
function custom_form_fields_form_alter($form_id, &$form) {
  if ($form_id == 'startup_node_form') {
    //funktioniert:
    $form['og_description']['#required'] = FALSE;
    //funktioniert:   
    //unset($form['og_description']);

    //funktioniert nicht:
    unset($form['group_business_details']['field_tags']);
  }
}

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hab ein wenig weiter

Eingetragen von bjacob@drupal.org (58)
am 14.01.2008 - 15:11 Uhr

Ich hab ein wenig weiter probiert und eine neue Strategie entwickelt. Alle meine Felder, die - abhängig von der Rolle - Pflichtfelder sein sollen, lege ich mit CCK als normale Felder (kein Pflichtfeld). Mit meinem eigenen Modul und form_alter() manipuliere ich ein gewünschtes Feld so, dass es - in Abhängigkeit von der Rolle - erforderlich ist. Dazu sieht der Code so aus:

function custom_form_fields_form_alter($form_id, &$form) {
  if ($form_id == 'startup_node_form') {
    global $user;
   
    if (in_array('MEINE_ROLLE',$user->roles)) {
      $form['field_company_phone']['0']['value']['#required'] = 1;
    }
  }
}

Wie man sieht, greife ich nun ganz anders auf das Feld zu (nicht mehr über die Kategorie, sondern direkt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 4 Tagen
  • Hey danke
    vor 1 Woche 5 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 3 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 3 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 20 Stunden
  • In der entsprechenden View
    vor 3 Wochen 20 Stunden
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 20 Stunden
  • gelöst
    vor 5 Wochen 4 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association