[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 :) - 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

XForm Formular direkt per PHP bauen :)

26. Nov 2013, 20:15

Hallo zusammen,

ich habe gerade durch Gregors Hinweis erfahren, dass man mit XForm Formulare auch direkt über PHP bauen kann. Ich hatte nämlich öfter das Problem, dass ich mit dieser Pipe Sprache nicht richtig klargekommen bin, bzw. ich mir hier etwas mehr Flexibilität gewünscht habe. Z.b. die Möglichkeit per if Abfrage ein Feld dazuzupacken oder nicht oder nen größer JS Block dazu etc.

Aber das hier finde ich total cool:
https://github.com/dergel/redaxo4_yrewr ... p#L15-L115

Mein erstes XFORM Formular sieht jetzt so aus:

Code: Alles auswählen

<?php
$xform = new rex_xform;

$xform->setValueField('text', array('test', 'foo'));
$xform->setValidateField('empty', array('test', 'nope!'));
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));

if ($xform->objparams['actions_executed']) {
    echo"!";
} else {
    echo $xform->getForm();
}
?>
Meine ersten 2 Fragen:

1) Das mit dem actions_executed funzt aber noch nicht, bzw. weiss jemand wie das aussehn muss?

2) Wie komme ich nun komfortabel an die Werte, so dass ich z.B. ne Mail rausschicken kann?

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: XForm Formular direkt per PHP bauen :)

26. Nov 2013, 21:36

Hi Rudi,
RexDude hat geschrieben:1) Das mit dem actions_executed funzt aber noch nicht, bzw. weiss jemand wie das aussehn muss?
Das wird nur gesetzt, wenn das Formular abgesendet wurde, und natürlich irgendwelche Actions ausgeführt wurden: https://github.com/dergel/redaxo4_xform ... c.php#L367
Da du keine Actions definiert hast, ist das false.

Außerdem musst du erst getForm aufrufen, damit dieser Wert überhaupt gesetzt wird. Ein Abfrage, ob Actions ausgeführt wurden, hat also nur innerhalb der postAction-Methode der Value-Klassen einen Sinn.
RexDude hat geschrieben:2) Wie komme ich nun komfortabel an die Werte, so dass ich z.B. ne Mail rausschicken kann?
Das läuft doch ganz normal über die XForm-Klassen, z. B. class.xform.action_email.inc.php.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

Re: XForm Formular direkt per PHP bauen :)

26. Nov 2013, 21:50

Dankeschön für die Antowort. Nun bin ich aber trotzdem genau so schlau wie vorher.
Also wie genau muss nun der Code aussehen um 1) auf das abgesendet und validierte Formular zu reagieren und b) an das Feld "test" zu kommen und den Inhalt auszugeben?

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 00:24

Huhu!
RexDude hat geschrieben:Dankeschön für die Antowort. Nun bin ich aber trotzdem genau so schlau wie vorher.
Also wie genau muss nun der Code aussehen um 1) auf das abgesendet und validierte Formular zu reagieren und b) an das Feld "test" zu kommen und den Inhalt auszugeben?
Zu 1)
Meinst du das ernst? :D

Code: Alles auswählen

$xform = new rex_xform();

$xform->setValueField('text', array('test', 'foo'));
$xform->setValidateField('empty', array('test', 'nope!'));
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));

$xform->setActionField('email', array('action', 'email', 'from@email.de', 'to@email.de', 'Betreff', 'Nachricht'));

echo $xform->getForm();
Einen ersten Orientierungspunkt für sowas kann dir übrigens auch der Code des XForm-Formbuilders geben.

Zu 2)
Die eingegebenen Werte stehen dir in $this->objparams['value_pool']['email'] und $this->objparams['value_pool']['sql'] zur Verfügung.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 00:30

Meinst du das ernst?
grrr, ja nicht jeder ist so ein XForm Crack wie du Xong! Als bitte nicht so herablassend wenns geht ;)

Ja und wie lautet nun die if abfrage: wenn seite neu aufgerufen --> zeige formular. wenn formular submitted -> zeige formular nicht sondern echo $this->objparams['value_pool']['test']?

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

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 01:53

Also ich habs jetzt so gelöst. Wusste nicht das getForm() leer zurückgibt, wenn form submitted.

Code: Alles auswählen

<?php
$xform = new rex_xform();

$xform->setValueField('text', array('test', 'foo'));
$xform->setValidateField('empty', array('test', 'nope!'));
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));

$form = $xform->getForm();

if ($form == '') {
    // form submitted
    echo $xform->objparams['value_pool']['email']['test'] . "!";
} else {
    // show form
    echo $form;
}
?>
kannst du mir noch sagen was es mit den zwei array email und sql auf sich hat? warum ist da der wert test dopplet drin?

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 01:58

Hi Rudi!
RexDude hat geschrieben:
Meinst du das ernst?
grrr, ja nicht jeder ist so ein XForm Crack wie du Xong! Als bitte nicht so herablassend wenns geht ;)
So hab ich das nicht gemeint. Aber ich musste mir die Klasse auch erst anschauen und den Code erarbeiten. Hab das selbst auch noch nie gemacht.
RexDude hat geschrieben:Ja und wie lautet nun die if abfrage: wenn seite neu aufgerufen --> zeige formular. wenn formular submitted -> zeige formular nicht sondern echo $this->objparams['value_pool']['test']?
Du kannst über die objparams ziemlich viel einstellen. Schau dir mal form_showformafterupdate an.
RexDude hat geschrieben:kannst du mir noch sagen was es mit den zwei array email und sql auf sich hat? warum ist da der wert test dopplet drin?
In das email-Array werden generell alle Werte geschrieben. Das sql-Array enthält nur die Werte, die (optional) auch in die Datenbank geschrieben werden sollen. Die meisten Value-Klassen kennen dafür das no_db-Flag.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 01:59

Eine $xform->getValueField('test'); fänd ich übrigens ganz nett :) Gibts sowas nicht schon?

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

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 02:07

Ok, vielen Dank Robert :)

So sieht nun mein erster Exkurs aus mit XFORM per reinem PHP :D

Code: Alles auswählen

<?php
$xform = new rex_xform();

$xform->setValueField('text', array('test', 'foo'));
$xform->setValidateField('empty', array('test', 'nope!'));
$xform->setObjectparams("form_action", rex_getUrl($REX['ARTICLE_ID']));

$form = $xform->getForm();

if ($form == '') {
    // form submitted
    $formData = $xform->objparams['value_pool']['email'];
    
    echo $formData['test'] . "!";
} else {
    // show form
    echo $form;
}
?>
Ist schon geil irgendwie :D

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

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 02:11

Jetzt kann ich auch endlich ne Email rausschicken die ne korrekte Anrede enthät:
- Sehr geehrte Frau
- Sehr geehrter Herr

:mrgreen:

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 12:05

RexDude hat geschrieben:Jetzt kann ich auch endlich ne Email rausschicken die ne korrekte Anrede enthät:
- Sehr geehrte Frau
- Sehr geehrter Herr
Ich definier mir für solche Fälle entweder eine eigene Klasse, die das kann, oder so:

Code: Alles auswählen

select|anrede|Anrede|Bitte wählen=,Frau=Sehr geehrte Frau,Herr=Sehr geehrter Herr,Familie=Sehr geehrte Familie
Dann kannst du im E-Mail-Template mit ###anrede### die Anrede an den Anfang der E-Mail schreiben.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 12:13

Den Trick kannt ich jetzt auch noch nicht...XForm ist halt voller Überraschungen ;)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: XForm Formular direkt per PHP bauen :)

27. Nov 2013, 14:16

RexDude hat geschrieben:Den Trick kannt ich jetzt auch noch nicht...XForm ist halt voller Überraschungen ;)
Also um´s mal positiv auszudrücken: Man kann und muss sehr kreativ damit umgehen. :D
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!


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

Re: XForm Formular direkt per PHP bauen :)

23. Feb 2014, 22:26

cool - so gefällt mir xForm auch wieder, danke :mrgreen:

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.

Zurück zu „Allgemeines [R4]“