Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Wie fragt man eine checkbox mit der drupal api ab?

Eingetragen von tomx (771)
am 02.12.2010 - 10:30 Uhr in
  • Allgemeines zu Drupal

Es soll geprüft werden ob die checkbox aktiv ist oder nicht?
Gibt es da irgendwo Besipsiele?

<?php
$form
['check'] = array(
 
'#type' => 'checkbox',
 
'#title' => t('abbestellen!'),
);
?>

‹ [gelöst] Pflichtfelder, Profile, Rollen, Admin? Logo"Sidebar" Darstellung ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Core Bug, der noch aktiv ist:

Eingetragen von Sense (1559)
am 02.12.2010 - 10:40 Uhr

Core Bug, der noch aktiv ist: http://drupal.org/node/259292

  • Anmelden oder Registrieren um Kommentare zu schreiben

Warum zeigt <?php

Eingetragen von tomx (771)
am 02.12.2010 - 11:27 Uhr

Warum zeigt

<?php
print_r
($form['check']);
?>
nicht alle arrayelemente? Es wird nix gezeigt.
?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Poste mal den ganzen

Eingetragen von Sense (1559)
am 02.12.2010 - 11:15 Uhr

Poste mal den ganzen Quelltext, sonst kann Dir schlecht geholfen werden

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php$send_form_to =

Eingetragen von tomx (771)
am 02.12.2010 - 11:50 Uhr

<?php
$send_form_to
= 'test@xxx.com';

function
my_form() {

 
$form['email'] = array(
   
'#type' => 'textfield',
   
'#title' => '',
   
'#size' => '20',
  );

$form['check'] = array(
 
'#type' => 'checkbox',
 
'#title' => t('abbestellen'),
);

 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => 'Subscribe',
  );
  return
$form;
}

/**
* Validate the form.
*/
function my_form_validate($form, &$form_state) {
 
$valid_email = $form_state['values']['email'];
  if (!
valid_email_address($valid_email)) {
 
form_set_error('email', 'Your email address -- ' . $valid_email . ' -- appears malformed');
  }
}

/**
* Create the hook_mail function
* Required in Drupal 6
*/
function my_form_mail($key, &$message, $params) {

 
$headers = array(
   
'MIME-Version' => '1.0',
   
'Content-Type' => 'text/html; charset=UTF-8; format=flowed',
   
'Content-Transfer-Encoding' => '8Bit',
   
'X-Mailer' => 'Drupal'
 
);

  foreach (
$headers as $key => $value) {
   
$message['headers'][$key] = $value;
  }

 
$message['subject'] = $params['subject'];
 
$message['body'] = $params['body'];
}

/**
* Create the form submit function
*/
function my_form_submit($form, &$form_state) {

   
$valid_email = $form_state['values']['email'];
   
$from = '';
   
$body = 'New Email Sent = ' . $valid_email;

   
$params = array(
   
'body' => $body,
   
'subject' => $form['check']['#return_value '],
    );

 
    if (
drupal_mail('my_form', 'some_mail_key', $valid_email, language_default(), $params, $from, TRUE))
    {
       
drupal_set_message('An email has been sent to ' . $valid_email);    
    } else {
       
drupal_set_message('There was an error sending your email');
    }
}

/**
* Return the form.
*/
return drupal_get_form('my_form');
print_r($form['check']);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

also wenn überhaupt musst Du

Eingetragen von Sense (1559)
am 02.12.2010 - 12:03 Uhr

also wenn überhaupt musst Du die Debug Ausgabe in die Funktion "my_form" packen
drupal_get_form liefert Dir das fertig gerenderte Formular und nicht das Array der Form

  • Anmelden oder Registrieren um Kommentare zu schreiben

print_r($form['check']); in

Eingetragen von tomx (771)
am 02.12.2010 - 13:26 Uhr

print_r($form['check']); in my_form() klappt. Gibt aber nur die deklarieren variablen aus:

<?php
Array ( [#type] => checkbox [#title] => abbestellen ) 
?>

Wo ist nun abfragbar ob die checkbos aktiviert wurde oder nicht? Es soll ja ein #default_value geben laut api aber warum zeigt print_r($form['check']); das nicht?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du solltest die Debugausgabe

Eingetragen von Sense (1559)
am 02.12.2010 - 13:31 Uhr

Du solltest die Debugausgabe auf der "form_state" im "hook_submit" setzen, dann sollte dort auch alles drin stehen was das Formular abschickt.
Nimm Dir am besten das "Devel" Modul zu Hilfe und verwende anstatt "print_r" die Funktion "dpm" aus dem Devel Modul.

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?php function

Eingetragen von tomx (771)
am 02.12.2010 - 13:41 Uhr

<?php
function my_form_submit($form, &$form_state) {

   
$valid_email = $form_state['values']['email'];
   
$from = 'test@example.com';
   
$body = 'New Email Sent = ' . $valid_email;


   
$params = array(
   
'body' => $body,
   
'subject' => 'This is a subject',
print_r($form_state);
    );
?>

print_r($form_state); zeigt nix.??? Müsste doch auch ohne devel modul gehen...

Im Grunde möchte ich das subject abhängig von der checkbox ändern.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es kann sein dass print_r

Eingetragen von Sense (1559)
am 02.12.2010 - 13:54 Uhr

Es kann sein dass print_r nicht ausgegeben wird, deshalb habe ich den Hinweis auf das Devel Modul mit zugepackt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

hebe das devel Modul nun

Eingetragen von tomx (771)
am 02.12.2010 - 14:06 Uhr

hebe das devel Modul nun aktiviert. Aber dpm($form_state); zeigt auch nix?

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?phpfunction

Eingetragen von Sense (1559)
am 02.12.2010 - 14:15 Uhr

<?php
function my_form_submit($form, &$form_state) {
   
dpm($form_state);

   
$valid_email = $form_state['values']['email'];
   
$from = 'test@example.com';
   
$body = 'New Email Sent = ' . $valid_email;

   
$params = array(
     
'body' => $body,
     
'subject' => 'This is a subject',
    );
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

auch an der Stellen nix? :-(

Eingetragen von tomx (771)
am 02.12.2010 - 14:23 Uhr

auch an der Stellen nix?

:-(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann wird aber Dein

Eingetragen von Sense (1559)
am 02.12.2010 - 14:28 Uhr

Dann wird aber Dein submit-Handler nicht ausgeführt!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn ich auf submit klicke

Eingetragen von tomx (771)
am 02.12.2010 - 14:37 Uhr

Wenn ich auf submit klicke schon... :-)

Ich verstehe es nicht. Es sollte doch etwas ausgegeben werden...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst doch erst beim

Eingetragen von Sense (1559)
am 02.12.2010 - 15:03 Uhr

Du kannst doch erst beim Validate / Submit prüfen ob der Checkbutton angehakt wurde!
Was willst Du denn mit einer Debugausgabe ohne dass das Formular versendet wurde?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hier bekomme ich dpm

Eingetragen von tomx (771)
am 02.12.2010 - 17:22 Uhr

Hier bekomme ich dpm Ausgaben

<?php
function my_form_validate($form, &$form_state) {

dpm($form_state);
 
$valid_email = $form_state['values']['email'];
  if (!
valid_email_address($valid_email)) {
 
form_set_error('email', 'Die E-Mailadresse (' . $valid_email . ') scheint falsch zu sein.');
  }
 
$checkbox = $form_state['values']['check'];
if (
$checkbox != 1) {
$checkbox = 'a';
}else{
$checkbox = 'b';
}
print(
$checkbox);
}
?>

print($checkbox); gibt nix aus. Wie bekomme ich nun $checkbox in 'my_form_submit()'?

  • Anmelden oder Registrieren um Kommentare zu schreiben

naja in der validate bringt

Eingetragen von Sense (1559)
am 02.12.2010 - 17:28 Uhr

naja in der validate bringt Dir das relativ wenig, das muss schon im submit eingebunden werden.
Pack mal in den submit-Handler ein "die();", sollte man zwar nicht aber dann weisst Du zumindest ob er überhaupt aufgerufen wird.

Wenn die Seite dann angezeigt wird, wird der Handler nicht ausgeführt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

So sieht die Funktions

Eingetragen von tomx (771)
am 02.12.2010 - 17:47 Uhr

So sieht die Funktions aus

<?php
function my_form_submit($form, &$form_state) {
die();
   
$valid_email = $form_state['values']['email'];
   
$from = 'test@example.com';
   
$body = 'New Email Sent = ' . $valid_email;
print(
$checkbox);
   
$params = array(
   
'body' => $body,
   
'subject' => $checkbox,
    );
?>

Ergebnis: weisse Seite.

ohne die(); gibt print($checkbox); einen Wert, aber 'subject' => $checkbox, nicht.
Warum?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hm, dann sollte das

Eingetragen von Sense (1559)
am 02.12.2010 - 17:48 Uhr

Hm,

dann sollte das dpm($form_state) aber auch einen Output liefern. Schick mir mal das ganze Modul an contact@sense-design.de
Dann guck ich da mal drüber warum das nicht rennt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für Dein Angebot aber

Eingetragen von tomx (771)
am 02.12.2010 - 18:00 Uhr

Danke für Dein Angebot aber das "modul" ist das folgende...

<?php
/**
* Create a form
*/
function my_form() {

 
$form['email'] = array(
   
'#type' => 'textfield',
   
'#title' => '',
   
'#size' => '20',
  );
$form['check'] = array(
 
'#type' => 'checkbox',
 
'#title' => t('abbestellen'),
);
 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => 'Subscribe',
  );
  return
$form;
}

/**
* Validate
*/
function my_form_validate($form, &$form_state) {

dpm($form_state);
 
$valid_email = $form_state['values']['email'];
  if (!
valid_email_address($valid_email)) {
 
form_set_error('email', 'Die E-Mailadresse (' . $valid_email . ') scheint falsch zu sein.');
  }
 
$checkbox = $form_state['values']['check'];
if (
$checkbox != 1) {
$checkbox = 'subscribe';
}else{
$checkbox = 'unsubscribe';
}
dpm($checkbox);
}

/**
* Create the hook_mail function
* Required in Drupal 6
*/
function my_form_mail($key, &$message, $params) {

 
$headers = array(
   
'MIME-Version' => '1.0',
   
'Content-Type' => 'text/html; charset=UTF-8; format=flowed',
   
'Content-Transfer-Encoding' => '8Bit',
   
'X-Mailer' => 'Drupal'
 
);

  foreach (
$headers as $key => $value) {
   
$message['headers'][$key] = $value;
  }

 
$message['subject'] = $params['subject'];
 
$message['body'] = $params['body'];
}

/**
* Create the form submit function
*/
function my_form_submit($form, $form_state) {
#die();
   
$valid_email = $form_state['values']['email'];
   
$from = 'test@example.com';
   
$body = 'E-Mail verschickt = ' . $valid_email;
print(
$checkbox);
   
$params = array(
   
'body' => $body,
   
'subject' => $checkbox,
    );
 
    if (
drupal_mail('my_form', 'some_mail_key', $valid_email, language_default(), $params, $from, TRUE))
    {
       
drupal_set_message('An email has been sent to ' . $valid_email);    
    } else {
       
drupal_set_message('There was an error sending your email');
    }
}

/**
* Return the form.
*/
return drupal_get_form('my_form');
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: 'subject' =>

Eingetragen von Exterior (2903)
am 02.12.2010 - 18:19 Uhr
Zitat:

'subject' => $checkbox,

Kann doch auch gar nicht funktionieren, weil du in der Submit-Funktion nirgendwo die Variable $checkbox belegst. Nur in der Validate-Funktion und dort bringt dir das nichts.

Ich verstehe echt das Problem nicht. Mach doch einfach in deine Submit-Funktion ein <?php $wert = $form_state['values']['check']; ?> und fertig ist der Lack, oder? Dann hast du den Rückgabe-Wert der Checkbox in der Variable und kannst ihn in der Submit-Funktion verwenden, wo liegt denn da das Problem?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, die Abfrage klappt nun in

Eingetragen von tomx (771)
am 02.12.2010 - 18:28 Uhr

Ja, die Abfrage klappt nun in der submit Funktion. Weis auch nicht warum $form_state anfangs nich wollte... Super. Herzlichen Dank für Deine Mühe.
:-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Doch noch was... <?php    if

Eingetragen von tomx (771)
am 02.12.2010 - 19:43 Uhr

Doch noch was...

<?php
   
if (drupal_mail('my_form', 'some_mail_key', $valid_email, language_default(), $params, $from, TRUE))
    {
?>

hat keinen Empfänger. Es fehlt $to. Trage ist das ein

<?php
   
if (drupal_mail('my_form', 'some_mail_key', $to, $valid_email, language_default(), $params, $from, TRUE))
    {
?>

gibt es "Fatal error: Cannot use object of type stdClass as array"

Wo muss der Empfänger denn sonst rein?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die erste Form ist die

Eingetragen von wla (9461)
am 02.12.2010 - 19:57 Uhr

Die erste Form ist die richtige (siehe Doku). $valid_email ist die E-Mail des Empfängers.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

$valid_email ist klar. Nur wo

Eingetragen von tomx (771)
am 02.12.2010 - 20:41 Uhr

$valid_email ist klar.

die doku der api sagt

<?php
drupal_mail
($module, $key, $to, $language, $params = array(), $from = NULL, $send = TRUE)
?>

inkl. $to. Woher weiß die Funktion an wen die mail gehen soll, ohne $to, wenn die 1. Form richtig ist, aus meinem dem letzten post.

Eigentlich möchte ich nur wissen wo bzw. wie wird der Empfänger festgelegt wird?

  • Anmelden oder Registrieren um Kommentare zu schreiben

In $to muss eine gültige

Eingetragen von Exterior (2903)
am 02.12.2010 - 20:49 Uhr

In $to muss eine gültige eMail-Adresse gespeichert sein, fertig.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ob der Parmeter $to oder

Eingetragen von wla (9461)
am 02.12.2010 - 21:10 Uhr

Ob der Parmeter $to oder $valid_email heißt ist doch völlig egal. Es muß darin die Email des Empfängers angegeben werden und gut ist.

Beste Grüße
Werner

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20458

Neue User:

  • Znogsnernoimb
  • ByteScrapers
  • Mroppoofpaync

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