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

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 23 Stunden 2 Minuten
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Tag 15 Stunden
  • melde mich mal wieder, da ich
    vor 7 Wochen 5 Tagen
  • Hey danke
    vor 7 Wochen 6 Tagen
  • Update: jetzt gibt's ein
    vor 8 Wochen 7 Stunden
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 2 Tagen
  • In der entsprechenden View
    vor 9 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20462

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

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