Hinweis: Dieser Abschnitt der Doku ist noch nicht fertig. Du kannst dich auf GitHub an der Fertigstellung beteiligen.
Mit diesen Klassen werden alle sichtbaren und verstecken Felder definiert.
Die Value-Klassen sind hier zu finden:
src/addons/yform/lib/yform/values/
Beispiele (Schreibweisen): yForm Formbuilder und PHP
Die PHP-Beispiele können in diesem Formular getestet/eingesetzt werden:
<?php
$yform = new rex_yform();
$yform->setObjectparams('form_action', rex_getUrl(REX_ARTICLE_ID,REX_CLANG_ID));
$yform->setValueField('text', array("wert1","Wert 1"));
echo $yform->getForm();
?>
Ein Redaxo-Feld, um einen Redaxo-Artikel auszuwählen.
$yform->setValueField('be_link', array("link","Link zu Artikel"));
be_link|link|Link zu Artikel|
REX_YFORM_DATA[field="link"]
Ein Auswahlfeld / Popup, um ein oder mehrere Datensätze mit denen einer fremden Tabelle zu verknüpfen, z.B. über einen Fremdschlüssel (1:n) oder eine Relationstabelle (m:n).
$yform->setValueField('be_manager_relation', array("manager_relation","Beispiel","rex_yf_messages","","0","0","","","","rex_yf_employees"));
be_manager_relation|manager_relation|Beispiel|rex_yf_messages||0|0||||rex_yf_employees|
REX_YFORM_DATA[field="manager_relation"]
Ein Redaxo-Feld, um eine einzelne oder mehrere Medienpool-Datei/en auszuwählen.
$yform->setValueField('be_media', array("image","Bild","1","0","general","jpg,gif,png,jpeg"));
be_media|image|Bild|1|0|general|jpg,gif,png,jpeg|
REX_YFORM_DATA[field="image"]
Ein Redaxo-Feld, um ein oder mehrere Kategorien aus der Struktur auszuwählen.
$yform->setValueField('be_select_category', array("be_select_category","Select Category","1","1","1","","1","0"));
be_select_category|be_select_category|Select Category|1|1|1||1|0|
REX_YFORM_DATA[field="be_select_category"]
Eine Reihe von Eingabefeldern, um tabellarische Daten einzugeben.
$yform->setValueField('be_table', array("table","Tabelle","Menge,Preis,Gewicht"));
be_table|table|Tabelle|Menge,Preis,Gewicht|
REX_YFORM_DATA[field="table"]
captcha|Beschreibungstext|Fehlertext
_
_
captcha_calc|Beschreibungstext|Fehlertext
_
_
Eine Checkbox mit vordefinierten Werten.
$yform->setValueField('checkbox', array("checkbox","Checkbox","0,1","1"));
checkbox|checkbox|Checkbox|0,1|1|
REX_YFORM_DATA[field="checkbox"]
Ein oder mehrere Checkbox-Felder mit Werten, die aus einer SQL-Abfrage stammen.
$yform->setValueField('checkbox_sql', array("checkbox_sql","Checkbox SQL","SELECT id, name FROM rex_yf_table WHERE name = paul ORDER BY prio"));
checkbox_sql|checkbox_sql|Checkbox SQL|SELECT id, name FROM rex_yf_table WHERE name = paul ORDER BY prio|
REX_YFORM_DATA[field="checkbox_sql"]
Erzeugt eine Selectbox, eine Radiobutton Auswahl oder ein Checkbox-Feld. Wahlweise mit Multiple Auswahl oder Gruppiert (optgroup). Das Feld choice ersetzt mit der YFORM Version 3.0 die Felder checkbox_sql, radio, radio_sql, select und select_sql.
Die Options können entweder als kommaseparierte Liste label1=val1,label2=val2...
, als JSON {"Europa": {"Dänemark": "DK", "Deutschland": "DE", "Österreich": "AT", "Schweiz": "CH"}, "Südamerika": {"Bolivien": "BO"}}
oder als SQL Query SELECT id AS value, name AS label FROM country
bzw. SELECT a.id AS value, a.name AS label, b.name AS group_label FROM country AS a LEFT JOIN continent AS b ON a.continent_id = b.id
angegeben werden. SQL muss die Felder value
und label
sowie group_label
für gruppierte Felder zurückgeben. Der Alias group_label
kann frei gewählt werden und muss beim Parameter group_by
angegeben werden (Siehe Beispiel 6). Mit der Syntax als kommaseparierte Liste sind keine gruppierten Felder (optgroups) möglich.
Hinweis
Die SQL Syntax unterscheidet sich zur früheren Syntax! Es werden nun die Felder label
und value
statt id
und name
erwartet.
Feldtyp
Wenn beim Parameter expanded
1 oder true angegeben wird, so wird ein Checkboxfeld oder Radiobuttons erzeugt. Bei 0 oder false wird ein Selectfeld erzeugt. Wenn beim Parameter multiple
1 oder true angegeben wird, so wird ein Multiselectfeld bzw. ein Checkboxfeld erzeugt.
Select: expanded = 0 multiple = 0
Multiselect: expanded = 0 multiple = 1
Radiobuttons: expanded = 1 multiple = 0
Checkboxfeld: expanded = 1 multiple = 1
Attribute
Der Parameter group_attributes
, choice_attributes
und attributes
können entweder als ausführbare Befehle (callable) (z.B. foo::bar($attributes)
oder foo($attributes)
) oder als JSON (z.B. {"class": "group-item"}
) angegeben werden.
Beim Parameter choice_attributes
sind bei einer Funktion drei Werte möglich: foo($attributes, $value, $label)
.
Syntax
$yform->setValueField('choice',["fieldname","Label",Options,expanded,multiple,default,group_by,preferred_choices,placeholder,group_attributes,choice_attributes,attributes,notice,[no_db]);
Beispiele
-
Select, Options als kommaseparierte Liste
$yform->setValueField('choice',["selectfield","Verkehrsmittel","Auto,Bus,Fahrrad,Schiff,Rollschuhe,Zug",0,0]);
-
Gruppiertes Checkboxfeld, Options als JSON
$yform->setValueField('choice',["mycheckboxfield","Vor- und Nachspeisen",{"Vorspeisen": {"Gemischter Salat":"insalata_mista","Tagessuppe":"piatto_del_giorno"},"Dessert":{"Spaghettieis":"spaghetti_di_ghiaccio","Tiramisu":"tiramisu"}},1,1]);
Syntax
choice|name|label|choices|[expanded type: boolean; default: false]|[multiple type: boolean; default: false]|[default]|[group_by]|[preferred_choices]|[placeholder]|[group_attributes]|[choice_attributes]|[attributes]|[notice]|[no_db]
Beispiele
-
Select, Options als kommaseparierte Liste
choice|colors|Farben|Blau,Rot,Grün,Gelb,Lila|0|0|
-
Checkboxfeld, Options als kommaseparierte Liste mit Vorauswahl
choice|colors|Farben|Blau,Rot,Grün,Gelb,Lila|1|1|Rot,Grün
-
Gruppierte Radiobutton, Options als JSON
choice|drinks|Trinken|{"Kalte Getränke": {"Apfelschorle":"01","Orangensaft":"02"},"Warme Getränke":{"Kaffee":"11","Tee":"12"}}|1|0|
-
Select aus SQL, gruppiert mit Leeroption und bevorzugter Auswahl
choice|artikel|Artikel|SELECT name label, id value, catname FROM rex_article ORDER BY catname|0|0||catname|8,5|--- bitte auswählen ---
Die Datensätze mit der Id 8 und 5 stehen am Anfang des Select (preferred choices).
Eine Reihe von Auswahlfeldern, in der ein Datum (Tag, Monat, Jahr) ausgewählt wird.
$yform->setValueField('date', array("date","Datum","2016","+5","DD/MM/YYYY","1","","select"));
date|date|Datum|2016|+5|DD/MM/YYYY|1||select|
REX_YFORM_DATA[field="date"]
Ein unsichtbares Feld, in das ein Zeitstempel gespeichert wird, wenn der Datensatz hinzugefügt oder bearbeitet wird.
$yform->setValueField('datestamp', array("createdate","Zeitstempel","mysql","","0"));
datestamp|createdate|Zeitstempel|mysql||0|
REX_YFORM_DATA[field="createdate"]
Eine Reihe von Auswahlfeldern, in der Datum und Uhrzeit (Tag, Monat, Jahr, Stunden, Minuten, Sekunden) ausgewählt wird.
$yform->setValueField('datetime', array("datetime","Datetime","2016","+5","00,15,30,45","DD/MM/YYYY HH:ii","0","","select"));
datetime|datetime|Datetime|2016|+5|00,15,30,45|DD/MM/YYYY HH:ii|0||select|
REX_YFORM_DATA[field="datetime"]
Ein einfaches Eingabefeld für E-Mail-Adressen.
$yform->setValueField('email', array("email","E-Mail-Adresse"));
email|email|E-Mail-Adresse|
REX_YFORM_DATA[field="email"]
Ein Feld ohne Eingabemöglichkeit.
$yform->setValueField('emptyname', array("emptyname","Emptyname"));
emptyname|emptyname|Emptyname|
REX_YFORM_DATA[field="emptyname"]
Ein Fieldset gruppiert Formularfelder.
$yform->setValueField('fieldset', array("fieldsest","Fieldset"));
fieldset|fieldsest|Fieldset|
REX_YFORM_DATA[field="fieldsest"]
Ein einfaches Eingabefeld für Gleitkomma-Zahlen.
$yform->setValueField('float', array("float","Float","1"));
float|float|Float|1|
REX_YFORM_DATA[field="float"]
generate_key|name|[no_db]
$yform->setValueField('float', array("float","Float","1"));
_
_
REX_YFORM_DATA[field="float"]
generate_password|name|[no_db]
_
_
Ein Feld, das aus dem Wert eines anderen Feldes einen Hashwert erzeugt.
$yform->setValueField('hashvalue', array("hashvalue","Hashvalue"));
hashvalue|hashvalue|Hashvalue|
REX_YFORM_DATA[field="hashvalue"]
hidden
definiert ein Feld, das nur serverseitig befüllt wird und nicht ausgegeben wird.
Hinweis: Für ein unsichtbares Eingabefeld wird nicht dieses hidden-Feld verwendet, sondern bspw. ein reguläres Eingabefeld (
text
), das zusätzlich das Attribut type="hidden" bekommt.
hidden|name|(default)value||[no_db]
hidden|name|(default)value||[no_db]
hidden|name|(default)value|REQUEST|[no_db]
$yform->setValueField('hidden', array("name", "Max Muster"));
// oder
$ycom_user = rex_ycom_auth::getUser();
if($ycom_user) {
$yform->setValueField('hidden', array("user", $ycom_user()->getId()));
}
Gibt HTML-Code an der gewünschten Stelle des Eingabe-Formulars aus.
$yform->setValueField('html', array("html","HTML","<p>Hallo Welt!</p>"));
html|html|HTML|<p>Hallo Welt!</p>|
REX_YFORM_DATA[field="html"]
Ein Feld, das einen Index / Schlüssel über mehrere Felder erzeugt.
$yform->setValueField('index', array("index","Index"));
index|index|Index|
REX_YFORM_DATA[field="index"]
Ein einfaches Eingabefeld für ganze Zahlen.
$yform->setValueField('integer', array("int","Integer"));
integer|int|Integer|
REX_YFORM_DATA[field="int"]
übergibt die IP des Users.
ip|name|[no_db]
ip|ip
$yform->setValueField('ip', array("ip"));
Ein Upload-Feld, mit dem eine Datei in den Medienpool hochgeladen wird.
$yform->setValueField('mediafile', array("media","Bilder","5000",".jpg,.gif,.png,.jpeg","","","","1"));
$yform->setValueField('mediafile', array("name","label","[min_size,max_size]/max_size","[allowed extensions]","[required 0,1]","min_err,max_err,type_err,empty_err","[no_db]","media_cat_id","mediapool_user"));
mediafile|media|Bilder|5000|.jpg,.gif,.png,.jpeg||||1|
REX_YFORM_DATA[field="media"]
password|name|label|default_value
$yform->setValueField('password', array("name","label", "default_value"));
Führt PHP-Code an der gewünschten Stelle des Eingabe-Formulars aus.
$yform->setValueField('php', array("php","PHP","<? echo 'hallo welt'; ?>"));
php|php|PHP|<? echo 'hallo welt'; ?>|
REX_YFORM_DATA[field="php"]
Hinweis: Zusammen mit dem Upload-Feld lassen sich komfortabel E-Mails mit Anhang versenden.
Ein Auswahlfeld, um Datensätze in eine bestimmte Reihenfolge zu sortieren.
$yform->setValueField('prio', array("prio","Reihenfolge"));
prio|prio|Reihenfolge|
REX_YFORM_DATA[field="prio"]
Ein Auswahlfeld, um Datensätze in eine bestimmte Reihenfolge zu sortieren.
$yform->setValueField('radio', array("radio","Radio","schlecht=-1,ok=0,gut=1","0"));
radio|radio|Radio|schlecht=-1,ok=0,gut=1|0|
REX_YFORM_DATA[field="radio"]
liest einen Datensatz und übergibt die ausgelesenen Werte in den E-mail value_pool, die einem E-Mail-Template über Platzhalter werden können.
readtable|tablename|feldname|label
Ein Auswahlfeld, um Datensätze in eine bestimmte Reihenfolge zu sortieren.
text|name|Name
readtable|rex_user|name|name
action|tpl2email|testtemplate||[email protected]
$yform->setValueField('text', array("name","Name"));
$yform->setValueField('readtable', array("rex_user","name","name"));
$yform->setActionField('tpl2email', array("testtemplate","","[email protected]"));
liest aus der Tabelle rex_user einen Datensatz
SELECT * FROM rex_user WHERE name='[eingabe feld name]'
und sendet eine E-Mail mit dem E-Mail-Template "testtemplate" and die E-Mail-Adresse:
Ein oder mehrere Auswahlfelder als Radio-Buttons.
$yform->setValueField('radio_sql', array("radio_sql","Radio SQL","SELECT id, name FROM rex_yf_table WHERE name = paul ORDER BY prio"));
radio_sql|radio_sql|Radio SQL|SELECT id, name FROM rex_yf_table WHERE name = paul ORDER BY prio|
REX_YFORM_DATA[field="radio_sql"]
definiert einen Reset-Button, mit dem Eingaben zurückgesetzt werden können.
resetbutton|name|label|value|cssclassname
resetbutton|reset|reset|Reset
uniqueform|name|table|Fehlermeldung
_
-
$yform->setValueField('resetbutton', array("reset","reset","Reset"));
Ein Auswahlfeld mit vordefinierten Werten.
$yform->setValueField('select', array("select","Select","schlecht=-1,ok=0,gut=1","","0","0"));
select|select|Select|schlecht=-1,ok=0,gut=1||0|0|
REX_YFORM_DATA[field="select"]
Ein Auswahlfeld mit Werten, die aus einer SQL-Abfrage stammen.
$yform->setValueField('select_sql', array("select_sql","Select SQL","SELECT id, name FROM rex_yf_table WHERE name = paul ORDER BY prio","","","0","","0"));
select_sql|select_sql|Select SQL|SELECT id, name FROM rex_yf_table WHERE name = paul ORDER BY prio|||0||0|
REX_YFORM_DATA[field="select_sql"]
Ein oder mehrere Submit-Buttons zum Absenden des Formulars.
$yform->setValueField('submit', array("submit","Submit"));
submit|submit|Submit|
REX_YFORM_DATA[field="submit"]
Input-Feld zur Eingabe eines Textes.
$yform->setValueField('text', array("text","Text"));
text|text|Text|
REX_YFORM_DATA[field="text"]
Ein mehrzeiliges Eingabefeld für Text.
$yform->setValueField('textarea', array("textarea","Textarea"));
textarea|textarea|Textarea|
REX_YFORM_DATA[field="textarea"]
Eine Reihe von Auswahlfeldern, in der die Uhrzeit (Stunden, Minuten, Sekunden) ausgewählt wird.
$yform->setValueField('time', array("time","Zeit","","00,15,30,45","HH:ii","","select"));
time|time|Zeit||00,15,30,45|HH:ii||select|
REX_YFORM_DATA[field="time"]
uniqueform|name|table|Fehlermeldung
_
-
Ein Upload-Feld, mit dem eine Datei in die Datenbank oder ein Verzeichnis hochgeladen wird.
$yform->setValueField('upload', array("upload","Upload","",".jpg,.gif,.png,.jpeg"));
upload|upload|Upload||.jpg,.gif,.png,.jpeg|
upload|name | label | Maximale Größe in Kb oder Range 100,500 | endungenmitpunktmitkommasepariert | pflicht=1 | min_err,max_err,type_err,empty_err,delete_file_msg | Speichermodus(upload/database/no_save) | `database`: Dateiname wird gespeichert in Feldnamen | Eigener Uploadordner [optional] | Dateiprefix [optional] |
REX_YFORM_DATA[field="upload"]
Hinweis: Zusammen mit dem PHP-Feld lassen sich komfortabel E-Mails mit Anhang versenden.