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

[gelöst] Webform Feld mit %get Variable + CCK Felder

Eingetragen von monsi (200)
am 01.02.2011 - 10:30 Uhr in
  • Views
  • Drupal 6.x

Ich habe einen Inhaltstyp mit mehreren CCK Feldern. Jetzt leite ich von diesem Node-Typ zu einem Webform Formular weiter und übergeben dabei ein paar Variablen. Diese Variablen greife ich dann per %get in einem Feld ab. Funktioniert auch soweit. :-)

Jetzt finde ich das nur ziemlich unschön, wenn in die URL so aussieht: "example.com/?id=inhalt eines cck feldes". Könnte ich in dieser Variable nicht die Node-ID übergeben und dann per PHP den entsprechenden Inhalt des Feldes "suchen"?

Bsp:
example.com/?id=32

Webform Feld Standard Inhalt:
"gebe mir den Inhalt vom CKK Feld "beispiel_cck_field" der Node ID 32 aus"

geht das??

Könnte ich das irgendwie umbauen?

<?php
print $node->field_beispiel[0]['view']
?>

Danke schon mal! :-)

‹ Views & Image-Field: Title-Feld ausgeben, Gruppierung von Bildern ViewsRotator hilfe benötigt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du könntest hier über ein

Eingetragen von SteffenR@drupal.org (2262)
am 01.02.2011 - 12:31 Uhr

Du könntest hier über ein eigenes Modul und den hook_form_alter auf den Formular zugreifen und die entsprechenden Einträge auslesen bzw. die Ausgabe der Felder beeinflussen.

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

ok, hätte ich soweit

Eingetragen von monsi (200)
am 01.02.2011 - 13:25 Uhr

ok, hätte ich soweit verstanden ... nur wie bekomme ich jetzt den Inhalt eines bestimmten CCK Feldes einer bestimmten Node ID raus? :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

mit der Funktion

Eingetragen von Sense (1559)
am 01.02.2011 - 13:29 Uhr

mit der Funktion node_load();
Hier werden dann auch die CCK Felder mitgeladen oder Du schreibst dir Dein eigenes DB-Query.

  • Anmelden oder Registrieren um Kommentare zu schreiben

monsi schrieb ok, hätte ich

Eingetragen von SteffenR@drupal.org (2262)
am 01.02.2011 - 13:31 Uhr
monsi schrieb

ok, hätte ich soweit verstanden ... nur wie bekomme ich jetzt den Inhalt eines bestimmten CCK Feldes einer bestimmten Node ID raus? :-)

Über die Funktion node_load - diese liefert dir ein Objekt der kompletten Node zurück - inkl. aller Felder.

<?php
$my_node
= node_load(123); // lade node 123
dsm($my_node); // Ausgabe des Objekts mithilfe des devel Moduls
?>

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich hab jetzt mal ein

Eingetragen von monsi (200)
am 01.02.2011 - 15:29 Uhr

ich hab jetzt mal ein bisschen rumprobiert ... mir auch die ausgabe von devel angeschaut ... doch was mache ich falsch? :(

<?php
$my_node
= node_load(15);
// dsm($my_node); // Ausgabe des Objekts mithilfe des devel Moduls

print $my_node->field_department[0]['value']
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was soll denn falsch sein. So

Eingetragen von Sense (1559)
am 01.02.2011 - 15:38 Uhr

Was soll denn falsch sein? So wie Du es geschrieben hast sollte das passen.
Du müsstest das Problem näher beschreiben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

naja ich bekomme keinerlei

Eingetragen von monsi (200)
am 01.02.2011 - 15:50 Uhr

naja ich bekomme keinerlei Ausgabe ...

Ich habe testweise eine Seite mit Eingabeformat "PHP" erstellt - die "dsm($my_node);" Ausgabe hat ja funtkioniert :-)
Dann habe ich eine Node ID referenziert, die die CCK Felder beinhaltet. Das wars eigentlich schon ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kannst du noch mal genau

Eingetragen von SteffenR@drupal.org (2262)
am 01.02.2011 - 16:51 Uhr

Kannst du noch mal genau deinen Quellcode posten.
Hast du denn auch das devel Modul installiert ?
Ist die Node, die du mit node_load laden möchtest im System vorhanden ?

  • Anmelden oder Registrieren um Kommentare zu schreiben

ok also ... habe es in einer

Eingetragen von monsi (200)
am 01.02.2011 - 17:20 Uhr

ok also ... habe es in einer lokalen Testumgebung ausprobiert:

Devel Modul ist installiert. Die Node (Id: 15) gibt es, falls du das mit "im System vorhanden" meinst. :-)

Erstmal hab ich mir alles aus gegeben lassen:

<?php
$my_node
= node_load(15);
dsm($my_node);
?>

Ausgabe s. Screenshot

Da habe ich dann meine CCK Felder gesehen und habe versucht eins per PHP auszugeben:

<?php
$my_node
= node_load(15);
// dsm($my_node);

print $my_node->field_department[0]['value']
?>

Ausgabe s. Screenshot 2
Wie man auf der Ausgabe sieht, wird mir nur leerer Content angezeigt.


// Edit:

Cache geleert - und es funktioniert -.-

Jetzt muss ich nur noch ein Module für den Hook schreiben ... mal sehen, ob ich das hinbekomme :-)

AnhangGröße
Screenshot 33.59 KB
Screenshot 2 18.24 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Kannst Du mal den gesamten

Eingetragen von Sense (1559)
am 01.02.2011 - 17:23 Uhr

Kannst Du mal den gesamten Quellcode posten aus den entsprechenden Dateien, damit wir mal einen Überblick bekommen?
UPDATE: ... oder so ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

sorry, wenn ich nochmal

Eingetragen von monsi (200)
am 01.02.2011 - 19:17 Uhr

sorry, wenn ich nochmal schreiben muss ... jetzt hänge ich über dem modul -.-

hier mal mein code:

<?php
/**
* Implementation of hook_form_FORM_ID_alter().
*/
function setfromvalue_form_webform_client_form_16_alter(&$form, &$form_state) { 
     
$my_number = $_GET['id'];
    if(
is_numeric($my_number))
    {
       
$my_node = node_load($my_number);
       
$my_content = $my_node->field_department[0]['value'];
       
$form['webform']['components'][2]['value'] = $my_content;
    }
}
?>

ich denke mal, dass da "$form['webform']['components'][2]['value'] = $my_content;" der fehler liegt ...

vielen vielen dank schon mal!!! :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wird der form_alter denn

Eingetragen von SteffenR@drupal.org (2262)
am 01.02.2011 - 20:36 Uhr

Wird der form_alter denn aufgerufen ? Du kannst dir über dsm auch innerhalb der Funktion die einzelnen Werte ausgeben lassen und so "eine Art Debugging machen" ..

Ein erster Schritt wäre hier, sich einmal den Wert der Variable $my_content ausgeben zu lassen bzw. überhaupt erstmal zu schauen, ob der Form-Alter korrekt aufgerufen wird. ( Modul aktiviert, korrekter Name von Modul bzw. Funktion etc.. )

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

SteffenR@drupal.org

Eingetragen von monsi (200)
am 01.02.2011 - 22:47 Uhr
SteffenR@drupal.org schrieb

Wird der form_alter denn aufgerufen ?

ja, wird er. Hatte zum testen mal die Funktion der Doku Seite:

<?php
$form
['terms_of_use'] = array(
   
'#type' => 'checkbox',
   
'#title' => t("I agree with the website's terms and conditions."),
   
'#required' => TRUE,
  );

?>

http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hoo...

das hat wunderbar funktioniert ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Keiner eine Idee für mich?

Eingetragen von monsi (200)
am 03.02.2011 - 10:45 Uhr

Keiner eine Idee für mich? :-(

Wenn ich das Formular ohne "?id=XX" aufrufe, bekomme ich die Seite angezeigt. Trage ich eine ID ein, bekomme ich eine Fehlermeldung: "Fatal error: Cannot use string offset as an array in C:\xampp\htdocs\drupal\includes\form.inc on line 986". Hier nochmal mein Modul Code:

<?php
/**
* Implementation of hook_form_FORM_ID_alter().
*/
function setfromvalue_form_webform_client_form_16_alter(&$form, &$form_state) { 
     
$my_number = $_GET['id'];   
   
    if(
is_numeric($my_number))
    {        
       
$my_node = node_load($my_number);
       
$my_content = $my_node->field_department[0]['value'];
       
$form['webform']['components'][2]['value'] = $my_content;
    }

}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nabend, jetzt bin ich

Eingetragen von monsi (200)
am 04.02.2011 - 22:18 Uhr

Nabend, jetzt bin ich schonmal etwas weiter ...

Mit dem Code bekomme ich ein Feld ins Formular, in diesem wird auch der Titel ausgegeben. In der E-Mail taucht dieses Feld aber nicht auf :(

<?php
/**
* Implementation of hook_form_FORM_ID_alter().
*/
function set_field_value_form_webform_client_form_7_alter(&$form, &$form_state) { 
     
$my_number = $_GET['id'];   
   
   
$my_node = node_load($my_number);       
       
$form[submitted][daten][testfeld] = array(
           
'#type' => 'textfield',
           
'#title' => t('Test Modul Field Titel'),
             
'#default_value' => $my_node->title,
             
'#required' => TRUE,
        );
}
?>

Es müsste doch auch eine Lösung geben die in etwa so aussieht:

<?php
    $form
['webform']['components']['feld']['#default_value'] = 'BLAH BLAH';
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank nochmal an

Eingetragen von monsi (200)
am 05.02.2011 - 15:56 Uhr

Vielen Dank nochmal an mikewink für die Hilfe im IRC Channel!! :-)

Benutze jetzt den normalen "hook_form_alter()":

<?php
/**
* Implementation of hook_form_alter().
*
* This lets you make changes to any form in the site. You can alter, remove
* or add form elements. You can also alter the validation and submission
* behavior. The name will always be modulename_form_alter.
*/
function set_field_value_form_alter(&$form, $form_state, $form_id) {
 
// Normally a switch is used because you may want to alter more than
  // one form and it is easy to add a new case for each form.
 
switch ($form_id) {
    case
'webform_client_form_7':
       
// dsm($form);
       
       
$my_number = $_GET['id'];   
       
$my_node = node_load($my_number);
       
$form['submitted']['fieldset']['field']['#default_value'] = $my_node->title;
        break;
  }
}
?>

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20464

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 14 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