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

[hook_form_alter()]CKK Felder als Radio Buttons in Webform anzeigen

Eingetragen von monsi (200)
am 23.02.2011 - 23:23 Uhr in
  • Modul-Entwicklung

Hi Leute,
ich mach` mal ein neues Thema auf - auch wenn es quasi zusätzlich zu einem alten Thema von mir ist. Falls das ein Problem sein sollte - bitte einfach löschen :-)

===============

In dem alten Thema ging es darum per $_GET Variable bestimmte CCK Felder eines Nodes in eine Webform zu bringen.
Hier der Link: http://www.drupalcenter.de/node/33297

Jetzt wollte ich in meinem Inhaltstyp zwei neue CCK Felder eintragen und diese per hook_form_alter() als Radio Buttons in der Webform ausgeben.
Zusätzlich: Wenn nur ein Feld eingetragen ist, soll auch nur ein Radio Button erscheinen.

Aber irgendwie bekomme ich das nicht hin... :/ Ich hoffe Ihr könnt mir helfen :-)

Hier mein versuch:

case 'webform_client_form_7':
        dsm($form);
$my_number = $_GET['id'];

$first_field = $my_node->field_cckfield[0]['value'];

$form['submitted']['reisedaten']['preis1']['#webform_component']['extra']['items'] = $first_field;
break;

Ich hab auch mal den dsm screen angehängt :-)

Vielen Dank schonmal!
Monsi

AnhangGröße
dsm.jpg414.35 KB
‹ [gelöst]Node via PHP erstellen Umlaut Problem PHP Snippets? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wieso legst du sie denn nicht

Eingetragen von netzkoop (1820)
am 24.02.2011 - 11:25 Uhr

Wieso legst du sie denn nicht gleich als Radio Buttons an?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hab` einen Radio Button

Eingetragen von monsi (200)
am 24.02.2011 - 11:37 Uhr

Ich hab` einen Radio Button bzw. eine Select Option angelegt. Nur würde ich gerne die Optionen auf Grund mehrer CCK Felder befüllen.

Es handelt sich um Touren (Inhaltstyp: tour). Diese Touren haben unterschiedliche Preise, manchmal sogar zwei, welche dann zur Auswahl stehen sollen.

Tour 1 -> Preis 1: 100€ / Preis 2: nix => 1 Radio Button in der Webform
Tour 2 -> Preis 1: 500€ / Preis 2: 550€ => 2 Radio Buttons in der Webform

Ich hoffe es war verständlich. :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich bin jetzt schonmal etwas

Eingetragen von monsi (200)
am 25.02.2011 - 01:14 Uhr

ich bin jetzt schonmal etwas weiter ....

<?php

$form
['submitted']['reisedaten']['preis1'] = array(
         
'#type' => 'radios', 
         
'#default_value' => variable_get('Preis 1', 'Preis 2'),
         
'#options' => array('Preis 1', 'Preis 2'),
         
'#required' => TRUE,
        );
?>

So werden mir zwei Radio Buttons ins Formular gesetzt. Sende ich dies aber ab, erhalte ich in der E-Mail entweder keine Ausgabe (bei Option 'Preis 1') oder bei der anderen Option nur "1" (als Ausgabe)....

Auserdem werden die Radios nicht auf "erforderlich" gesetzt.

Monsi

// Nachtrag:

<?php

$form
['submitted']['reisedaten']['preis1'] = array(
         
'#type' => 'radios', 
         
'#title' => t('Preise'),
         
'#default_value' => variable_get('Preis', 1),
         
// '#options' => array('Preis 1', 'Preis 2'),
         
'#options' => array($mytest => $mytest, $mytest2 => $mytest2),
         
'#weight' => 3,
         
'#required' => TRUE,
        );

?>

So bekomme ich einen Eintrag in der E-Mail. Aber wenn z.B. eine Zahl im Radio Button ist, bekomme ich den Fehler "Es wurde eine nicht erlaubte Auswahl entdeckt. Wenden Sie sich bitte an den Administrator der Website." :/

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin gestern noch etwas

Eingetragen von monsi (200)
am 25.02.2011 - 10:11 Uhr

Ich bin gestern noch etwas weiter gekommen ...

<?php

        $mytest
= $my_node->field_challange[0]['value'];
       
// $mytest = 'asdf';
       
$mytest2 = 'blah';
       
       
       
$form['submitted']['reisedaten']['preis1'] = array(
         
'#type' => 'radios', 
         
'#title' => t('Preise'),
         
'#default_value' => $mytest,
         
'#options' => array($mytest => $mytest, $mytest2 => $mytest2),
         
'#weight' => 3,
         
// '#required' => TRUE,
       
);

?>

So bekomme ich auch eine Ausgabe in der E-Mail.

Wähle ich allerdings eine Option aus, die über ein CCK Feld eingetragen wird, bekomme ich den Fehler "Es wurde eine nicht erlaubte Auswahl entdeckt. Wenden Sie sich bitte an den Administrator der Website.".

Schreibe ich die Variable "normal", funktionierts wieder ... hat jemand eine Idee warum? :-/

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was ergibt denn: <?php

Eingetragen von netzkoop (1820)
am 25.02.2011 - 11:11 Uhr

Was ergibt denn:

<?php
$mytest
= $my_node->field_challange[0]['value'];
print
$mytest;
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

netzkoop schrieb Was ergibt

Eingetragen von monsi (200)
am 25.02.2011 - 11:21 Uhr
netzkoop schrieb

Was ergibt denn:

<?php
$mytest
= $my_node->field_challange[0]['value'];
print
$mytest;
?>

Das gibt mir den Wert zurück, welcher im CCK Feld eingetragen ist. Das Ganze sieht so weit auch schon ganz gut aus ... solange bis man auf "Absenden" klickt. ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Poste doch mal die ganze

Eingetragen von netzkoop (1820)
am 25.02.2011 - 13:28 Uhr

Poste doch mal die ganze function und wo du sie aufrufst...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok, das ist meine

Eingetragen von monsi (200)
am 25.02.2011 - 13:46 Uhr

Ok, das ist meine function:

<?php
function set_field_value_form_alter(&$form, $form_state, $form_id) {
  switch (
$form_id) {
    case
'webform_client_form_7':
       
// dsm($form);
                
       
$my_number = $_GET['id'];   
       
$my_node = node_load($my_number);
       
$first = $my_node->field_date[0]['value'];
               
       
$mytest = $my_node->field_challange[0]['value'];
       
// $mytest = 'asdf';
       
$mytest2 = 'blah';
       
       
$form['submitted']['reisedaten']['reise']['#default_value'] = $first;
       
       
$form['submitted']['reisedaten']['preis1'] = array(
         
'#type' => 'radios', 
         
'#title' => t('Preise'),
         
'#default_value' => $mytest,
         
'#options' => array($mytest => $mytest, $mytest2 => $mytest2),
         
'#weight' => 3,
         
// '#required' => TRUE,
       
); 

        break;
   
  }
}
?>

Im ersten Schritt hole ich mir die ID aus der URL. Über "node_load" und der ID hole ich mir dann die entsprechenden Felder aus der Node. Dieses CCK Feld gebe ich dann im textfield "reise" aus.

Im zweiten Schritt hole ich mir wieder ein CCK Feld aus der Node und gebe dieses dann in den Radio Buttons aus.
Wähle ich dann die Option, welche von $mytest definiert wird, bekomme ich oben besagten Fehler (Ausgabe an sich sitmmt aber). Wähle ich die Option von $mytest2, funktioniert alles wunderbar. Benutze ich die auskommentierte Variable anstelle des CCK Feldes, funktioniert auch alles wunderbar. :-/

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich bin jetzt sogar schonmal

Eingetragen von monsi (200)
am 25.02.2011 - 18:28 Uhr

Ich bin jetzt sogar schonmal einen anderen Weg gegangen, und hab versucht den Preis über die Taxonomie zu vergeben (Die Touren sind in verschiedene Kategorien eingeteilt).

Könnte mir mal jemand den unterschied zischen dem:
(funktioniert)

<?php

        $mytest
= 'asdf1';
       
$mytest2 = 'blah1';
       
       
$form['submitted']['reisedaten']['preis1'] = array(
         
'#type' => 'radios', 
         
'#title' => t('Preise'),
         
'#default_value' => $mytest,
         
'#options' => array($mytest => $mytest, $mytest2 => $mytest2),
         
'#weight' => 3,
         
// '#required' => TRUE,
       
);

?>

und diesem nennen:
(funktioniert nicht)

<?php

if (count($my_node->taxonomy) > 0)  {
          foreach (
$my_node->taxonomy as $term) {
           
$term_id = $term->tid;
          }
        }       

        switch (
$term_id) {
            case
'1':
                   
$mytest = 'asdf1';
                   
$mytest2 = 'blah1';
                break;
            case
'2':
                   
$mytest = 'asdf2';
                   
$mytest2 = 'blah2';
                break;           
        }
       
       
$form['submitted']['reisedaten']['preis1'] = array(
         
'#type' => 'radios', 
         
'#title' => t('Preise'),
         
'#default_value' => $mytest,
         
'#options' => array($mytest => $mytest, $mytest2 => $mytest2),
         
'#weight' => 3,
         
// '#required' => TRUE,
       
);


?>

Beim zweiten Beispiel bekomme ich wieder die bekannte Fehlermeldung ... aber warum?? :-/

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wo definierst du eigentlich

Eingetragen von netzkoop (1820)
am 26.02.2011 - 12:45 Uhr

Wo definierst du eigentlich die Funktion und wo rufst du sie auf? In einem Modul? Template?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ach so meintest du das ...

Eingetragen von monsi (200)
am 26.02.2011 - 17:07 Uhr

Ach so meintest du das ... ich mach das über ein Modul.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hab gerade nochmal die

Eingetragen von netzkoop (1820)
am 26.02.2011 - 23:34 Uhr

Ich hab gerade nochmal die Fehlermeldung gegoogelt und hier herausgefunden, dass sie in
includes/form.inc:699 ;705 modules/filter/filter.module:530 erzeugt wird.

Vielleicht bringt dich das weiter...

Mach doch nochmal in beiden Fällen ein var_dump() von $mytest

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • 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
Weiter

Neue Kommentare

  • Was für einen Server benutzt
    vor 2 Wochen 3 Stunden
  • Wenn die Subdomain auf
    vor 2 Wochen 2 Tagen
  • ordnerstruktur
    vor 2 Wochen 2 Tagen
  • Die Subdomain muß auf den
    vor 2 Wochen 4 Tagen
  • Verwende doch das Tag dafür,
    vor 5 Wochen 6 Tagen
  • Guckst du hier: step by step
    vor 5 Wochen 6 Tagen
  • Guckst du hier: step by step
    vor 5 Wochen 6 Tagen
  • Ich habe ja keine Angst vor
    vor 7 Wochen 1 Tag
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 7 Wochen 3 Tagen
  • Vielen Dank erst einmal, aber
    vor 7 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250289
Registrierte User: 20519

Neue User:

  • Wolf Dab
  • Scottteday
  • MichaelPeeno

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