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

Problem mit hook_form_alter

Eingetragen von martin.kaintz (12)
am 14.04.2010 - 20:18 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo Ihr,

ich habe folgendes Problem bei meinem Modul:
Ich hab mittels hook_node_info() einen neuen Inhaltstyp erstellt und dann mit hook_form_alter() erweitert. In dieser function wird jqueryui (natürlich übers entsprechende modul) inklusive css geladen. Ich brauch nämlich den coolen datepicker! Wenn ich jetzt einen Inhalt erstellen will und (absichtlich) die erforderlichen Felder nicht ausfülle, dann lädt er nach dem submit die js und css von jquery nicht mehr! Die Site sieht in diesem Zustand so aus, dass ganz oben im roten Warnungsfeld die Warnungen stehen und die entsprechenden Felder rot umrahmt sind. Wiso lädt er jetzt jquery nicht?

Könntet ihr mir bitte helfen? Ich bin für jede Frage offen und bedanke mich schon mal für jede Antwort!
lg Martin

‹ [gelöst] Save configuration Methode eigenes Modul Eigenes Modul plötzlich "unsichtbar" ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_form() und Caching

Eingetragen von Carsten Müller (29)
am 15.04.2010 - 07:54 Uhr

Moin,

das Formular wird von Drupal gecacht. Beim submit holt sich Drupal das Formular dann aus dem Cache und lädt es nicht mehr erneut. Das gleiche Problem hatte ich auch gestern gerade.

Hier eine Lösung:
Wenn du folgendes in dein hook_form_alter() einbaust, dann wird das Formular nicht mehr aus dem Cache beim submit geladen sondern neu zusammen gebaut. Geht etwas auf die Performance hilft aber, dass hook_form_alter() erneut aufgerufen wird und damit deine JavaScript Dateien mit neu geladen werrden.

// FORCE REBUILING OF FORM WHEN SUBMITTED
unset($form['form_build_id']);

Ne andere Frage: Wenn du deinen eigenen Content Type baust, dann solltest du wahrscheinlich hook_form() und nicht hook_form_alter() verwenden. hook_form_alter() wird bei jedem Formular aufgerufen. hook_form() nur bei deinem Formular des Inhaltstypen. Ist besser für die Performance und die Sicherheit deines Codes. Du kannst so z.B. nicht aus Versehen ein anderes Formular verändern.
siehe http://api.drupal.org/api/function/hook_form/6

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, vielen Dank! Es

Eingetragen von martin.kaintz (12)
am 15.04.2010 - 16:16 Uhr

Hi,

vielen Dank! Es funktioniert so!
Das ist mein erstes Modul, bin also absoluter Anfänger. Ich werd das dann mal mit hook_form() probieren und falls es probleme gibt gleich hier posten.

lg Martin

  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_insert

Eingetragen von martin.kaintz (12)
am 15.04.2010 - 21:10 Uhr

Halloo,

ich hab leider schon wieder ein Problem.
Wenn ich die Daten, die im erstellten form eingegeben wurden überarbeiten möchte und danach in die Datenbank speichern möchte, verwende ich hook_insert() oder?
Ich hab absolut keinen Plan, wie ich in dieser Funktion auf die Daten vom Formular zugreifen kann.

Bitte um eure Hilfe! DANKE!
lg Martin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sorry.. schon wieder ein Problem

Eingetragen von martin.kaintz (12)
am 15.04.2010 - 21:11 Uhr

Und schon wieder habe ich eine Frage:

Was muss ich machen, damit in der function hook_nodeapi(...) die Variable $op den Wert 'update' enthält? Ich hab schon 1000 Sachen versucht, aber es steht immer nur sowas wie "loadviewalter". Warum verwenden andere Module in der switch($op) Anweisung "case 'update':", wenn der Fall sowiso nie auftritt?

Danke für die Hilfe!
lg Martin

  • Anmelden oder Registrieren um Kommentare zu schreiben

Guten morgen, ich schätze mal

Eingetragen von Carsten Müller (29)
am 16.04.2010 - 07:01 Uhr

Guten morgen,

ich schätze mal deine Ausgabe ist falsch. Es sind die Operationen load, view, alter, also drei verschiedene.
Lass die die $op so ausgeben:

echo "OP: ".$op."<br />\n";

Dann siehst du mehr.

$op=update wird aufgerufen, wenn ein existierender Knoten (node) wieder bearbeitet und dann erneut gespeichert wird. $op=insert wird aufgerufen, wenn ein neuer Knoten angelegt und gespeichert wird.

Folgendes noch: hook_nodeapi() dient dazu fremde Inhaltstypen zu modifizieren. Wenn du deinen eigenen Inhaltstypen bearbeiten willst und Zusatzinfos speichern möchtest, dann wäre die Verwendung von hook_insert() und hook_update() empfehlenswert. Die werden aufgerufen wenn dein eigener Inhaltstyp gespeichert wird. Insert, wenn der Knoten neu erstellt wird, update wenn ein vorhandener Knoten bearbeitet wurde.

Gruß
Carsten

  • 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 2 Wochen 14 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 11 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

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