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 - 22: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 - 10: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 - 10: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 - 00: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 - 09: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 - 10: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 - 10: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 - 12: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 - 12: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 - 17: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 - 11: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 - 16: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 - 22: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

  • gepatchte PHP Version 7.4 für Windows
  • 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
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 3 Tagen 7 Stunden
  • Guten morgen und Danke
    vor 3 Tagen 13 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 3 Tagen 19 Stunden
  • Danke Schmittrich. Die Frage
    vor 5 Tagen 11 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 5 Tagen 14 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 3 Tagen
  • Vielen Dank für Ihren
    vor 6 Wochen 6 Tagen
  • Composer ist sehr ratsam
    vor 7 Wochen 1 Tag
  • Vielen Dank für den
    vor 7 Wochen 3 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250323
Registrierte User: 20571

Neue User:

  • alxshell
  • AnthonyhoF
  • Philiphelve

» 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