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

Einem Formularfeld AJAX hinzufügen

Eingetragen von Micha1111 (290)
am 16.02.2011 - 22:36 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Ich habe ein eigenes Modul erstellt, dass einen neuen Inhaltstypen erstellt und diesem dann die Felder verein_name und verein_kurzname hinzufügt.
Dies geschieht über die Moduldatei verein.install
Bis hierhin ist die Dtei verein.module einfach nur leer.

Es funktioniert auch, denn ich kann anschließend einen entsprechenden Node über "Inhalt hinzufügen" erzeugen.

Nun wollte ich das Eingabeformular insofern abändern, als ich dem Feld verein_name die AJAX-Funktionalität hinzufügen wollte.
Wird ein Name im entsprechenden Feld eingetragen, soll sich die Beschreibung des Feldes für den Kurznamen entsprechend anpassen.
Der Code dafür stammt aus dem Modul "examples"

Geht auch, ich habe den folgenden Code in die Datei verein.module eingefügt:

function verein_form_alter(&$form, &$form_state, $form_id) {

switch ($form_id) {
   
case 'verein_node_form':

$form['verein_name'] = array(
'#type' => 'textfield',
'#title' => t('Vereinsname'),
'#weight' => -4,
'#ajax' => array(
'callback' => 'verein_simplest_callback',
'wrapper' => 'replace_meldung_div',
),
);

$form['verein_kurzname'] = array(
'#type' => 'textfield',
'#title' => t('Kurzname'),
'#description' => '',
'#weight' => -3,
'#prefix' => '<div id="replace_meldung_div">',
                '#suffix' => '</div>',
);
   
if (!empty($form_state['values']['verein_name'])) {
    $form['verein_kurzname']['#description'] = t('der lange Name lautet:').  " '{$form_state['values']['verein_name']}'";
    }

break;

}
}


function verein_simplest_callback($form, $form_state) {
  // The form has already been submitted and updated. We can return the replaced
  // item as it is.
  return $form['verein_kurzname'];
}

Im Grunde führe ich also ein hook_form_alter() im selben Modul aus.
Das klappt, weil Drupal 7 intern schon vorher das Standardformular generiert haben muss.

Beim Verlassen des Feldes "verein_name" durch drücken der Taste "Tab" wird AJAX gestartet und die Beschreibung des Feldes "verein_kurzname" ändert sich.
Allerdings geht der Fokus zu diesem Feld verloren => der Curser hängt im luftleeren Raum, statt im Feld "verein_kurzname"
Anschließend klicke ich in das Feld "verein_kurzname" und gebe ihn ein.

Dann klicke ich auf die Schaltfläche speichern, erhalte jedoch die ziemlich kryptische Fehlermeldung lt. Anhang.
Irgendetwas scheint zu fehlen, oder es ist ein BUG.

Bin für jeden Hinweis dankbar.

‹ Formular(-feld) neu aufbauen nach Änderung (hook_form_alter) drupal 7 php snippet: Code-Optimierung & Fragen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hier noch die Fehlermeldung

Eingetragen von Micha1111 (290)
am 16.02.2011 - 22:38 Uhr

Hier noch die Fehlermeldung als Screenshot

AnhangGröße
fehlermeldung.JPG 77.7 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Inzwischen kann ich sagen,

Eingetragen von Micha1111 (290)
am 19.02.2011 - 18:07 Uhr

Inzwischen kann ich sagen, dass es nichts mit Ajax zu tun.

Die Fehlermeldungen kommen immer, wenn ich ein Formularfeld mit hook_form_alter() ändere.

Außerdem kann ich gar nicht alle Elemente ansprechen, wenn ich nicht das ganze Formularfeld ersetzen möchte, sondern nur einen bestehenden Wert ändern will.
z.B. geht:
$form['verein_name']['#weight'] = -3;
Die Gewichtung wird im Formular auf -3 geändert

z.B. geht nicht:
$form['verein_name']['#description'] = t('Test');
wird einfach ignoriert

Könnte jemand ein Beispiel posten, wie es in Drupal 7 geht ?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hat's noch keiner versucht ?

Eingetragen von Micha1111 (290)
am 02.03.2011 - 18:08 Uhr

Hat's noch keiner versucht ?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ein Syntax-Detail

Eingetragen von PHILIPP-SCHAFFNER.CH (81)
am 01.04.2011 - 11:16 Uhr

Hey @Micha1111! Gibt es einen Grund für die unten stehende Schreibweise?:

Micha1111 schrieb

$form['verein_kurzname']['#description'] = t('der lange Name lautet:'). " '{$form_state['values']['verein_name']}'";

Reicht denn nicht einfach:

$form['verein_kurzname']['#description'] = t('der lange Name lautet:'). $form_state['values']['verein_name'];

Nur so ein Detail.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Tag 9 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Tagen 1 Stunde
  • melde mich mal wieder, da ich
    vor 7 Wochen 6 Tagen
  • Hey danke
    vor 8 Wochen 12 Minuten
  • Update: jetzt gibt's ein
    vor 8 Wochen 18 Stunden
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 2 Tagen
  • In der entsprechenden View
    vor 9 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20462

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

» 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 22 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