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

Formular mit D7

Eingetragen von kissinger (32)
am 11.01.2011 - 22:03 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo!

Der nachfolgende Code aus einem Testmodul funktiniert unter Drupal 6 einwandfrei, unter Drupal 7 nicht mehr. Anstelle des Textfeldes und des Submit-Buttons erscheint nur das Wort "Array". Was muß geändert werden damit der Code auch unter D7 läuft?

Danke!

function formexample_menu(){
  $items['formexample'] = array(
    'title' => 'View the form',
    'page callback' => 'formexample_page',
    'access arguments' => array('access content'),
  );
  return $items;
}

function formexample_page(){
  $output = t('This page contains our example form');
  $output .= drupal_get_form('formexample_nameform');
  return $output;
}

function formexample_nameform(){
  $form['username'] = array(
    '#title' => t('Your name'),
    '#type' => 'textfield',
    '#description' => t('Please enter your name'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );

  return $form;
}

function formexample_nameform_validate($form, &$form_state){
  if($form_state['values']['username'] == 'King Kong'){
    form_set_error('username', t('King Kong is not allowed to use this form!'));
  }
}

function formexample_nameform_submit($form, &$form_state){
  $name = $form_state['values']['username'];
  drupal_set_message(t('Thanks for filling out the form , %name', array('%name' => $name)));
}

‹ Formual in DB speichern Blockrefresh mit Ajax ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

render

Eingetragen von stBorchert (6003)
am 12.01.2011 - 08:41 Uhr

Hallo.
Ich hab Dein Code-Fragment mal formatiert und in "code"-Tags gepackt. Das erhöht die Lesbarkeit ungemein.

Zum Problem: wenn Du das Formular holst und in einen String packst, musst Du Dich selbst darum kümmern, dass es gerendert wird:

<?php
function formexample_page(){
 
$output = t('This page contains our example form');
 
$output .= render(drupal_get_form('formexample_nameform'));
  return
$output;
}
?>

Ergebnis: http://screencast.com/t/Nxh78SvLP

[api:drupal_get_form:7] liefert nur ein Array zurück. Wenn Du die Funktion als "page callback" verwendest, wird automatisch [api:render:7] aufgerufen. Wenn Du einen eigenen "page callback" verwendest, musst Du [api:render:7] selbst aufrufen, damit das Formular erzeugt wird.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Page Callback

Eingetragen von kissinger (32)
am 12.01.2011 - 09:14 Uhr

Hallo Stefan,

vielen Dank für Deine Hilfe, ja das Script läuft jetzt.

Noch eine Frage: Wie genau muß die Funktion formexample_menu aussehen, wenn ich als "page callback" drupal_get_form angebe, es muß ja irgendwie auf die Funktion "formexample_nameform" verwiesen werden. Wenn ich "formexample_nameform" als "page arguments" übergebe klappt das nicht.

Danke!

Gruß Rüdiger

  • Anmelden oder Registrieren um Kommentare zu schreiben

drupal_get_form

Eingetragen von stBorchert (6003)
am 12.01.2011 - 09:48 Uhr

Du musst den Funktionsnamen des page arguments in ein Array packen:

<?php
function mymodule_menu() {
 
$items['formexample'] = array(
   
'title' => 'Test',
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('formexample_nameform'),
  );
}
?>

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke

Eingetragen von kissinger (32)
am 12.01.2011 - 23:36 Uhr

Vielen Dank Stefan!

Gruß Rüdiger

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • 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
Weiter

Neue Kommentare

  • Arrrrg. Nix Tabelle :-D /*
    vor 3 Tagen 3 Stunden
  • Textboxen mit Tabelle
    vor 3 Tagen 9 Stunden
  • Du sollst ja auch keine
    vor 3 Tagen 10 Stunden
  • Theme
    vor 3 Tagen 10 Stunden
  • Welches Theme benutzt du
    vor 3 Tagen 16 Stunden
  • Mit Responsive Raster hatte
    vor 4 Tagen 6 Stunden
  • Hallo Alex,um das Häkchen
    vor 4 Tagen 15 Stunden
  • Modul view_unpublished
    vor 5 Tagen 18 Stunden
  • Modul "override node options"
    vor 6 Tagen 12 Stunden
  • Im Grunde ist dass ein
    vor 1 Woche 1 Tag

Statistik

Beiträge im Forum: 250270
Registrierte User: 20477

Neue User:

  • Robertnobia
  • AltonRaf
  • JeffreyPaf

» Alle User anzeigen

User nach Punkten sortiert:
wla9463
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