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

[gelöst]2 Fragen zu hook_form(type=>date_popup) und hook_view

Eingetragen von mheit (14)
am 15.11.2010 - 00:18 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo,
wie im Titel geschrieben hab ich zwei Fragen:

1) Ich nutze in einem eigenen node-Modul die Form (type=>date_popup) das funktioniert auch. Allerdings mit einer Einschränkung: Beim "Inhalt erstellen" der node wird das Datum im Datumsfeld nicht angezeigt. Sobald ich das Feld klicke, erscheint der Kalender und das Datum wird eingetragen, wenn ich es wähle (mit Return wird auch das aktuelle Datum eingetragen). Ich hätte es gern so, dass das aktuelle Datum auch beim Erstellen im Feld angezeigt und später übernommen wird. Nun ist es so, dass ich bereits ein default-Datum (#default_value => 'now') probiert habe, auch einfach #value => irgendwas, aber dann hab ich zwar Anzeige im Feld aber immer vom 01.01.2010.

Kann man das richten?

Der aktuelle Code:

$form['field_invoice_date'] = array(
    '#type' => 'date_popup',
        '#title' => 'Date',
        '#date_format' => $format,
        '#date_label_position' => 'within',
        '#date_timezone' => 'Europe/Berlin',
        '#date_increment' => 15,
        '#date_year_range' => '0:+2',
);

2) Ich versteh die hook_view absolut nicht. Kann mir da jemand helfen, bitte!
Mein Problem ist, dass ich momentan nur unformatierte Texte in der Ansicht habe, sprich alle Daten schön hintereinandergereiht ohne Titel. Nun hab ich das auch mit dem '#value' => theme('mymodule_myfield', $node->myfield) Eintrag aus der Api versucht, aber dann hab ich keine Anzeige; außer wenn ich 'page' als erstes Argument liefere. Dann wird aber - wie der Name sagt - eine ganze Seite im Node eingebunden.
Wie kann ich hook_view nutzen, um mir die Ausgabe des nodes etwa wie bei Eingeben anzeigen zu lassen. (node_api hab ich auch probiert, nüscht jutes)
Nachhilfe sehr, sehr willkommen!

Der aktuelle Code:

function rechnung_view($node, $teaser = FALSE, $page = FALSE) {
    $node = node_prepare($node, $teaser);
    $node->content['field_user'] = array(
        '#value' =>  $node->field_user,
        '#weight' => 1);
    $node->content['field_invoice_no'] = array(
        '#value' => $node->field_invoice_no,
        '#weight' => 49);
  return $node;
}

Danke schonmal!

Gruß
Michael

‹ In Ubercart->Warenkorb die Anzahl unveränderbar machen User bearbeiten: brauche vom jeweilegen Konto den Namen und die Mail-Werte ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

So richtig werde aus deinen

Eingetragen von wla (9466)
am 15.11.2010 - 01:17 Uhr

So richtig werde aus deinen Erklärungen nicht schlau aber vielleicht zwei Hinweise
Du mußt #default_value verwenden, sonst können die Werte im Formular nicht geändert werden.
Wenn #default_value => 'now' nicht wirkt versuche doch mal #default_value => time().
Der hook_view wird aufgerufen, wenn Dein Node angezeigt werden soll. Du mußt also die Ausgabe des Nodes codieren. Du solltest das Kapitel im Handbuch oder in dem Buch "Pro Drupal Development" noch mal gründlich durchlesen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay, ich versuch noch mal

Eingetragen von mheit (14)
am 15.11.2010 - 08:36 Uhr

Okay, ich versuch noch mal bisschen anders zu erklären:

1) Wenn ich die node erstelle, wird nach den verschiedenen Eingaben gefragt. Unter anderem Datum. Das Datumsfeld ist dann immer leer (ohne default_vlaue), bis ich darauf klicke und der Kalender öffnet, dann sehe ich das aktuelle Datum im Kalender.
Wenn ich nun default_value im Modul angebe, ist das Feld Datum sofort beim Erstellen gefüllt. Allerdings mit dem dem Datum 01.01.2010, also nicht wie eingestellt mit aktuellem Datum.

Ich hätte gern Feld: sofort gefüllt mit aktuellem Datum. Klappt aber irgendwie nicht.

2)
Bei dem view auf die node werden mir die entsprechenden Infos unformatiert ausgegeben. Alle in einer Reihe und ohne Titel der Felder. Verstehe nicht warum und was ich ändern muss.

Gelesen hab ich übrigens bevor ich hier poste. Aber daraus werde ich eben nicht schlau.

Gruß
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

1) Du hast offensichtlich

Eingetragen von wla (9466)
am 15.11.2010 - 18:49 Uhr

1) Du hast offensichtlich einen Fehler in der Variablen $format, die Du in der Form anziehst. Da ich nicht wußte, was Du da drin stehen hattest, habe ich diese Zeile auskommentiert. Wenn ich dann im Code habe '#default_value' => 'now', bekomme ich das aktuelle Datum und die Zeit gemäß Deiner Vorgabe von 15 Minuten Increments in den beiden Feldern angezeigt.
2) Wenn Du ein eigenes Node-Modul schreibst, bist Du auch für die Ausgabe verantwortlich und mußt den entsprechenden HTML-Code mit den Daten ausgeben. Das macht man üblicherweise in einer eigenen Theme-Funktion. Da packt man div-Tags etc mit Klassen dazu und evtl <br /> damit man das anschließend über CSS stylen kann bzw die Ausgabe schon mehrzeilig vorbereitet hat.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für die Hilfe. 1) So

Eingetragen von mheit (14)
am 16.11.2010 - 10:37 Uhr

Danke für die Hilfe.

1) So hab noch rumprobiert. Du hast recht, so funktioniert es bei mir auch, wenn ich das Format auslasse.
Bei mir soll/ist $format = 'd. M. Y' sein, damit dann das Zeitfeld erst gar nicht angezeigt wird. Funktioniert auch, aber mit der eingangs erwähnten Einschränkung.

2) Tja, aller Anfang ist schwer. Hatte ich irgendwie glatt übersehen/ nicht bedacht, dass ich das Ganze selbst formatieren muss. Bin dem Irrtum aufgesessen, ich könnte die Titel der hook_form irgendwie auch im hook_view verwenden. Nach 2 stündiger Suche in der API hab ich es jetzt erstmal über die node-Template zurechtgebogen.

Gruß
Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich weiß nicht was Du falsch

Eingetragen von wla (9466)
am 16.11.2010 - 11:24 Uhr

Ich weiß nicht was Du falsch machst, aber bei mir ist das Ergenis von:

    $form['field_invoice_date'] = array(
      '#type' => 'date_popup',
      '#title' => 'Date',
      '#date_format' => 'd. M. Y',
      '#date_label_position' => 'within',
      '#date_timezone' => 'Europe/Berlin',
//      '#date_increment' => 15,
      '#date_year_range' => '0:+2',
      '#default_value' => 'now',
  );

date field

Ok. Gerade gesehen, das Datum ist falsch sorry. Da bleibt wohl nur mit CSS ausblenden über die Id "edit-field-invoice-date-timeEntry-popup-1". Mußt Du mal nachsehen, ob die bei Dir identisch ist.
Beste Grüße
Werner

AnhangGröße
Screenshot_datefield.png 6.17 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Dieses doofe Datum zermürbt

Eingetragen von mheit (14)
am 16.11.2010 - 13:52 Uhr

Dieses doofe Datum zermürbt mich so langsam ;)

Ich hab jetzt versucht, per phpAdmin den Feld-Typ auf Date zuändern, was auch klappt. Wird aber leider nicht von drupal .install gefeatured, nur datetime, also wieder db-Fehler bei der Modulinstallation. Na egal.

Also ich werd mal deinen Tipp versuchen, und das Feld einfach ausblenden. Bzw. bei der Ansicht muss das sowieso irgendwie gemacht werden, weil als Datum immer die Datetime ausgegeben wird. Das sieht schäbig aus.

Danke nochmal für die Hilfe. Meld mich, wenn alles geklappt hat.

Edit: Ja, containername ist der selbe. Mit visibility:hidden klappt das auch. So werd ich's jetzt machen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • anyone has a working Betaflight mirror right now?
    vor 20 Minuten 15 Sekunden
  • Vielen Dank für Ihren
    vor 4 Stunden 53 Minuten
  • Composer ist sehr ratsam
    vor 2 Tagen 3 Stunden
  • Vielen Dank für den
    vor 4 Tagen 14 Stunden
  • Die alten CMS Vergleiche von contentmanager.de
    vor 5 Tagen 2 Stunden
  • Gut gemacht
    vor 5 Tagen 2 Stunden
  • Layout Builder etc. z.B. für Landing Pages
    vor 5 Tagen 2 Stunden
  • Links
    vor 1 Woche 17 Stunden
  • Moin,wow, sehr gutes
    vor 1 Woche 1 Tag
  • Dass ist eine spannende
    vor 1 Woche 2 Tagen

Statistik

Beiträge im Forum: 250314
Registrierte User: 20559

Neue User:

  • Cruzorerm
  • Valid64x
  • Plandkeews

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 9 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