[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
XForm Formular direkt per PHP bauen :) - Seite 1 - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

25. Feb 2014, 15:24

he he, bittschön :D So hat man finde ich viel mehr Möglichkeiten. Die wenigsten Redakteuere fummeln ausserdem im Formbuilder herum.

Benutzeravatar
webghost
Beiträge: 266
Registriert: 6. Okt 2010, 20:10
Kontaktdaten: Website

Re: XForm Formular direkt per PHP bauen :)

25. Feb 2014, 15:42

ja genau... ich machte bisher immer alles selber ohne xForm sobald es etwas anspruchsvoller wurde. Ich denke ein normales Formular mit einer Mailfunktion hab ich so auch noch schneller geschrieben als in der xForm-Sprache, konnte mich damit nie anfreunden...

Benutzeravatar
Larsen
Beiträge: 34
Registriert: 3. Nov 2009, 22:39

Re: XForm Formular direkt per PHP bauen :)

20. Jun 2014, 14:42

Hi,

bitte, könnte mir jemand erklären, wie ich die Daten am Ende in eine Tabelle schreibe?
Sprich das php-Pendant zu "Bei Submit: Nur in Datenbank speichern..." aus dem xform-Modul.

Ich vermute es ist etwas wie

Code: Alles auswählen

$xform->setObjectparams('main_table', 'rex_meinetabelle');
aber bisher kein Erfolg damit.

Ach ja, und den Debug Modus würde ich dann auch gern verwenden können. Habe jetzt

Code: Alles auswählen

$xform->setDebug(TRUE);
drin, aber keine Ausgabe...

Ciao, Lars

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

20. Jun 2014, 14:49

Setzt doch einfach ein INSERT INTO ab. Ganz einfach.

Benutzeravatar
Larsen
Beiträge: 34
Registriert: 3. Nov 2009, 22:39

Re: XForm Formular direkt per PHP bauen :)

20. Jun 2014, 14:52

also ganz ohne xform code...

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

21. Jun 2014, 01:21

yup. deshalb hab ich mir das ganze auch zurechtgebaut um eben hier mehr direkten einfluss zu haben wie ich was wo speichere. und die ganzen werte stehen ja in $formData[].

Benutzeravatar
Larsen
Beiträge: 34
Registriert: 3. Nov 2009, 22:39

Re: XForm Formular direkt per PHP bauen :)

21. Jun 2014, 09:18

Cool. Danke!

Benutzeravatar
alexplus
Beiträge: 212
Registriert: 13. Feb 2007, 15:03
Wohnort: Heilbronn
Kontaktdaten: Website

Re: XForm Formular direkt per PHP bauen :)

29. Jul 2014, 22:25

Hi!

Gibt's eigentlich hier eine Möglichkeit, den Standardwert / Rückgabewert für die Checkbox festzulegen? Sowas wie:

Code: Alles auswählen

$xform->setValueField('checkbox', array('agb', 'Ich habe die AGB gelesen', 'nein,ja'));
Im Moment bekomme ich ja nur 0/1 als Antwort raus.

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

29. Jul 2014, 23:05

Kannst du nicht einfach per If-Abfrage dir hier was mit dem Rückgabewert zusammenbauen. Bei der PHP XForm Variante ist das ja gerade der Vorteil nochmal was zu machen mit den Rückgabewerten ehe man sie in ne Email packt.

Benutzeravatar
alexplus
Beiträge: 212
Registriert: 13. Feb 2007, 15:03
Wohnort: Heilbronn
Kontaktdaten: Website

Re: XForm Formular direkt per PHP bauen :)

30. Jul 2014, 00:55

RexDude hat geschrieben:Kannst du nicht einfach per If-Abfrage dir hier was mit dem Rückgabewert zusammenbauen.
Doch, kann ich. Aber bevor ich das mache, frage ich lieber nach ;) Zumal das meiste zu XForm + PHP ja hier dokumentiert ist.

Bei einer Auswahlliste ist es ja bspw. möglich, "value" und "Beschreibung" anzugeben, weil es ja auch für die Ausgabe benötigt wird.

steri
Beiträge: 364
Registriert: 12. Jul 2007, 14:59

Re: XForm Formular direkt per PHP bauen :)

6. Okt 2014, 18:31

hallo,

mich würde noch interessieren wie ich das xform template ansprechen kann - ich habs mit

Code: Alles auswählen

$xform->setActionField('db2email', array('contact','', 'email@domain.at'));
probiert aber es kommt kein email an

und der debug modus wär wirklich noch super

Code: Alles auswählen

$xform->setDebug(true);
geht leider nicht

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

6. Okt 2014, 18:47

Hi,

Templates habe ich noch nie wirklich benutzt. Mache dass direkt per PHP um so auch die volle Kontrolle zu haben. Ist aber in dem Modul mit drin als Beispiel.

Und wegen Debugmodus müsstest du vielleicht mal schauen wie das das Formbuilder Modul macht. Ich meine da gabs auch einen Debug Modus den man einschalten konnte. Kann mich aber auch irren.

steri
Beiträge: 364
Registriert: 12. Jul 2007, 14:59

Re: XForm Formular direkt per PHP bauen :)

6. Okt 2014, 19:52

danke im formbuilder steht das mit dem debug genauso drinnen - aber geht eben leider nicht.
ich hab das jetzt ohne template gemacht

für alle dies brauchen können - danke an rexdude

Code: Alles auswählen

<?php


$xform = new rex_xform();

//$xform->setDebug(TRUE);

// value vields

$xform->setValueField('html', array('name', 'Ich interessiere mich für<div class="clear">&nbsp;</div>'));
$xform->setValueField('checkbox', array('buch', 'Buch', 'nein,ja'));
$xform->setValueField('checkbox', array('tv', 'TV', 'nein,ja'));
$xform->setValueField('html', array('name', '<div class="clear">&nbsp;</div>'));
$xform->setValueField('text', array('anrede', 'Anrede *'));
$xform->setValueField('text', array('vorname', 'Vorname *'));
$xform->setValueField('text', array('nachname', 'Nachname *'));
$xform->setValueField('text', array('strasse', 'Straße / Nr.'));
$xform->setValueField('text', array('plz', 'PLZ / Ort'));
$xform->setValueField('text', array('email', 'E-Mail *'));
$xform->setValueField('captcha', array('Bitte tragen sie den Text ein', 'Bitte prüfen das Text Eingabe Feld'));
$xform->setValueField('submit', array('Senden', 'Abschicken'));


// validate fields
$xform->setValidateField('empty', array('email', 'Bitte tragen Sie Ihre E-Mail Adresse ein'));
$xform->setValidateField('email', array('email', 'Bitte überprüfen Sie Ihre E-Mail Eingabe'));
$xform->setValidateField('empty', array('anrede', 'Bitte tragen Sie Ihre Anrede ein'));
$xform->setValidateField('empty', array('vorname', 'Bitte tragen Sie Ihren Vornamen ein'));
$xform->setValidateField('empty', array('nachname', 'Bitte tragen Sie Ihren Nachnamen ein'));


// other stuff
$xform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']); 


if (($form = $xform->getForm()) == '') {
	// form submitted
	$formData = $xform->objparams['value_pool']['email'];


	$mailFrom = $formData['email'];
	$mailSubject = 'Anfrage - www.domain.at';

	// mail body	
	$mailBody = '';
	$mailBody .= 'Ich interessiere mich für:' . PHP_EOL;
	$mailBody .= 'Buch: ' . $formData['buch'] . PHP_EOL;
	$mailBody .= 'TV: ' . $formData['tv'] . PHP_EOL . PHP_EOL;
	$mailBody .= 'Anrede: ' . $formData['anrede'] . PHP_EOL;
	$mailBody .= 'Vorname: ' . $formData['vorname'] . PHP_EOL;
	$mailBody .= 'Nachname: ' . $formData['nachname'] . PHP_EOL;
	$mailBody .= 'Straße / Nr: ' . $formData['strasse'] . PHP_EOL;
	$mailBody .= 'PLZ / Ort: ' . $formData['plz'] . PHP_EOL;
	$mailBody .= 'E-Mail: ' . $formData['email'] . PHP_EOL;

	// init mailer
	$mail = new rex_mailer();

	if ($formData['buch'] == 'ja') {$mail->AddAddress('buch@domain.de', 'buch@domain.de');}
	if ($formData['tv'] == 'ja') {$mail->AddAddress('tv@domain.de', 'tv@domain.de');}
	$mail->WordWrap = 80;
	$mail->FromName = $mailFrom;
	$mail->From = $mailFrom;
	$mail->Sender = $mailFrom;
	$mail->Subject = $mailSubject;
	$mail->Body = nl2br($mailBody);
	$mail->AltBody = strip_tags($mailBody);


	// send mail
	if ($mail->Send()) {
		echo '<p>Vielen Dank für Ihr Interesse an Projekt!<br>
Wir bemühen uns, Ihre Anfrage schnellstmöglich zu bearbeiten.</p>';
	} else {
		echo '<p>FEHLER - Bitte versuchen Sie es noch einmal.</p>';
	}

} else {
	// show form
	echo $form;
}




?>


summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen :)

10. Mai 2015, 11:50

Mit

Code: Alles auswählen

$xform->setValueField('text', array('name', 'Name'));
bekomme ich

Code: Alles auswählen

<p class="formtext formlabel-name" id="xform-formular-name">
    <label class="text  " for="xform-formular-field-1" >Name</label>
    <input type="text" class="text   " name="FORM[formular][1]" id="xform-formular-field-1" value="" />
</p>
Das Text-Input bekommt also nicht die das erforderliche name="name". So kann ich die Werte nicht in die DB schreiben ;((

Anders bei einem hidden input, dort funktionierts.

An was liegt das?

Git es irgendwo eine klare, explizite Übersicht über die direkten php-Anweisungen für XForm? ich hab auch nach seeeehr langem Suchen nirgends etwas gefunden....


Mit Dank für Hinweise!

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: XForm Formular direkt per PHP bauen :)

11. Mai 2015, 09:40

Hej,

> Das Text-Input bekommt also nicht die das erforderliche name="name". So kann ich die Werte nicht in die DB schreiben

die Werte schreibt XForm in die Datenbank. Da brauchst du nix zu machen.

Das was du aber haben willst, heißt

Code: Alles auswählen

objparmas|real_field_names|true
oder

Code: Alles auswählen

$xform->setObjectparams('real_field_names',true);
vg Thomas

summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen :)

14. Mai 2015, 20:44

Dankeschön. Hab zudem gemerkt, dass man aus Cheatset zu Redaxo 4.5. diese xForm Attribute herauslesen kann. (Für alle, die diese Frage auch haben werden).

Zudem: geht sowas eigentlich in einem Modul:

Code: Alles auswählen

$xform->setValueField('text', array('name', $I18N->msg('donationcenter_thanxUpage_name')));
ich meine: Kann die Sprachvariablen a) in Modulen verwenden b) innerhalb dieses XForm-Aufbaus? Muss die Inkludierung der Sprachfiles im config-File verändert werden?

Mit Dank!

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

14. Mai 2015, 21:51

So viel ich weiss gibts $I18N per default nicht im Frontend.
Ich vermute du musst es explizit anlegen, so wie das REDAXo eigentlich an dieser Stelle auch macht: https://github.com/redaxo/redaxo4/blob/ ... #L132-L135

summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen :)

14. Mai 2015, 21:58

Merci. Das übersteigt mein Wissen. Wäre echt praktisch gewesen.

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

14. Mai 2015, 22:13

$I18N ist halt eigentlich nur fürs Backend gedacht.
Aber wie gesagt. Die 3 Codezeilen von oben rein, dann hast du's.
Und $REX['CUR_CLANG'] (Frontend) auf $REX['LANG'] (Backend) ummappen musst du noch. rex_create_lang() erwartet ja ein string wie "de_de".

summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen :)

14. Mai 2015, 22:20

Wie gesagt, ich versteh Bahnhof. Für mich ist Addonbau mehr ein Puzzlen von Codestücken...

summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen :)

14. Mai 2015, 22:33

"Ummappen" ist mir ein fremder Begriff. Und ich erwarte nicht, dass Du mir alles codest. Ich machs sonst mit dem Addon "Platzhalter". Ich finde einfach, das hat ein so unübersichtliches Interface, find kaum noch was dort.

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: XForm Formular direkt per PHP bauen :)

15. Mai 2015, 00:03

Es gitb auch das String Table Addon ;)
Aber du willst das doch mitliefern mit deinem eigenen Addon oder? Dann macht es schon Sinn es in den Langfiles zu belassen, zumal ja hier ein Benutzer eh nix änder wird oder soll.

Naja rex_create_lang() erwartet z.b. "de_de" oder "en_gb". Du hast aber nur 0,1,2 etc. für $REX[CUR_CLANG]. Also wenn 1 englisch ist muss 1 = en_gb sein. Den Rest überlasse ich jetzt aber dir ;)

summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen - $I18N

16. Mai 2015, 17:00

Habs mal so gelöst, da man ja nicht wissen kann ob '0' nun deutsch oder irgendeine andere Sprache ist:

Code: Alles auswählen

// get language of visitor as 'de', 'en' etc... and bring to I18N-Format. We want to use Backend lang file for module

$curlang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
            
            if ($curlang == 'de') 
            
                {$currentlanguage = 'de_de';}
            
            if ($curlang == 'en') 
            
                {$currentlanguage = 'en_gb';}
                
            else {}


// include $I18N (Frontend has no I18N)


if (!is_object($I18N)) {
        
                        
            $includepath = $REX['INCLUDE_PATH'].'/addons/donationcenter/lang/';
            
            $I18N = rex_create_lang($currentlanguage,$includepath,true);
           
        }
         
Zuletzt geändert von summselbrumm!media am 25. Mai 2015, 12:34, insgesamt 1-mal geändert.

summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen :)

16. Mai 2015, 17:49

Dann noch eine Frage zur Validierung. Was ist daran falsch?

Code: Alles auswählen

$xform->setValidateField('preg_match', array('name', '/[9]/i', $I18N->msg('donationcenter_validation_nosymbols')));
Sollte dies nicht alles durchlassen ausser eine 9? Sind die Slashes und Klammern so, wie es XForm benötigt? (Ist so im XForm-Modul angegeben). Was auch immer ich für Varianten probiere a-zA-Z etc., immer kommt die Meldung. Um das Namens und das Nachrichtenfeld zu schützen, würde ich folgendes machen:

Code: Alles auswählen

$xform->setValidateField('preg_match', array('name', '/[^$+{}']/', $I18N->msg('donationcenter_validation_nosymbols')));

summselbrumm!media
Beiträge: 44
Registriert: 6. Jan 2011, 14:39

Re: XForm Formular direkt per PHP bauen - setValidateField

16. Mai 2015, 18:02

Anscheinend klappts so

Code: Alles auswählen

$xform->setValidateField('preg_match', array('name', '/^[a-zA-ZäüöéàèÄÜÖÉÀÈß +.-]{5,30}$/', $I18N->msg('donationcenter_validation_nosymbols')));
Das wäre dann z.B. "nur Buchstaben, Bindestrich und Punkt und der Eintrag muss zwischen 5 und 30 Zeichen lang sein".
Zuletzt geändert von summselbrumm!media am 25. Mai 2015, 12:33, insgesamt 1-mal geändert.

Zurück zu „Allgemeines [R4]“