Die Kurzerklärung zum select Element lautet:
select|name|label|Frau=w,Herr=m|[no_db]|defaultwert|multiple=1|selectsize
Wenn ich hier zum Beispiel nur name, label, felder und dann noch multiple setzen will, kann ich statt
select|name|label|Opt1=opt1,Opt2=opt2,Opt3=opt3|||1
auch das schreiben:
select|name|label|Opt1=opt1,Opt2=opt2,Opt3=opt3|#multiple:1
die Zwischen-Pipes kann ich weglassen, weil ich mit der #
-Notation Keys angebe, die von YForm unabhängig von ihrer Position erkannt werden.
Es lassen sich auch mehrere Attribute hinzufügen:
text|geburtstag|Geburtstag*|#required:required|#grid:,datepicker
YForm lässt über die Notation # + Attributname
nur bestimmte Attribute zu (z.B. ['placeholder', 'autocomplete', 'pattern', 'required', 'disabled', 'readonly']
für ein input[type="text"]
. Wenn das nicht ausreicht kann man über #attributes:{"json":"objekt"}
alle möglichen Attribute setzen:
select|anrede|Anrede*|Bitte wählen=,Frau=Frau,Herr=Herr|#attributes:{"required":""}
text|vorname|Vorname*|#attributes:{"required":"","autofocus":"","placeholder":"zb Willi"}
Beispielformular
select|anrede|Anrede*|Bitte wählen=,Frau=Frau,Herr=Herr|#attributes:{"required":""}
text|vorname|Vorname*|#attributes:{"required":"","autofocus":""}
text|nachname|Nachname*|#attributes:{"required":""}
text|strasse_nr|Straße & Nr*|#attributes:{"required":""}
text|plz_ort|PLZ & Ort*|#attributes:{"required":""}
text|geburtstag|Geburtstag*|#grid:,datepicker|#attributes:{"required":"","data-yearrange":"c-100:c"}
email|email|E-Mail*|#attributes:{"required":""}
checkbox|irgendwasakzeptiert|Hiermit aktzeptiere ich irgendwas|#attributes:{"required":""}
submit||Chaka!
action|showtext|Danke fürs Mitmachen|<p class="form_success">|</p>|0
action|tpl2email|name_des_emailtemplates||[email protected]
Die #-Notation ist nicht auf Attributes beschränkt sondern funktioniert mit jedem Key. Auch das Label könnte man damit an eine beliebige stelle setzen:
|#label:Foo|
Man könnte also nur noch benannte keys nutzen:
text|#name:first_name|#label:Vorname|#...
oder eben auch:
text|#label:Vorname|#name:first_name|#...
Man kann so übrigens auch eigene Keys hinzufügen, und die dann im eigenen Template auslesen. Man braucht dazu also die Value-Klasse nicht anfassen.
Ist übrigens nichts Pipe-spezifisches, auch wenn man YForm über PHP nutzt kann man beide Varianten nutzen:
['first_name', 'Vorname']
(unbennant, Reihenfolge ist wichtig)
['name' => 'first_name', 'label' => 'Vorname']
(mit Keys, Reihenfolge ist egal)
|first_name|Vorname|
und |#name:first_name|#label:Vorname|
werden 1:1 in die beiden obigen PHP-Varianten übersetzt.
Und man kann aber eben auch beides mischen:
Pipe: |first_name|Vorname|#attributes:...|
PHP: ['first_name', 'Vorname', 'attributes' => '...']